Задание 25. Информатика. ЕГЭ. Апробация. 05.03.2025
- Просмотры: 716
- Изменено: 6 марта 2025
Пусть \(M\) — сумма минимального и максимального натуральных делителей целого числа, не считая единицы и самого числа. Если таких делителей у числа нет, то считаем значение \(M\) равным нулю. Напишите программу, которая перебирает целые числа, большие \(700~000,\) в порядке возрастания и ищет среди них такие, для которых \(M\) оканчивается на \(4.\) В ответе запишите в первом столбце таблицы первые пять найденных чисел в порядке возрастания, а во втором столбце — соответствующие им значения \(M.\) Например, для числа \(20\) \(M = 2 + 10 = 12.\) Количество строк в таблице для ответа избыточно.
Решение:
Python
from itertools import count
def sum_divisors(n):
d = set()
for x in range(2, int(n**0.5) + 1):
if n % x == 0:
d.add(x)
d.add(n // x)
return min(d) + max(d) if d else 0
q = 0
for n in count(700_000):
sd = sum_divisors(n)
if sd % 10 == 4:
print(n, sd)
q += 1
if q == 5:
break
Ответ:
\(700004 \,\, 350004\)
\(700009 \,\, 41194\)
\(700023 \,\, 233344\)
\(700024 \,\, 350014\)
\(700044 \,\, 350024\)