Задание 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\)