Задание 25. Информатика. ЕГЭ. Статград. 24.10.2024-1

Просмотры: 301
Изменено: 24 ноября 2024

Пусть \(M (N)\) – сумма \(2\) наибольших различных натуральных делителей натурального числа \(N\), не считая самого числа и единицы. Если у числа \(N\) меньше \(2\) таких делителей, то \(M (N)\) считается равным \(0.\)

Найдите все такие числа \(N\), что \(110~250~000 \leqslant N \leqslant 110~300~000\), а десятичная запись числа \(M (N)\) заканчивается на \(1002.\)

В ответе перечислите все найденные числа \(N\) в порядке возрастания.

Решение:

Python


def M(n):
    s = set()
    for i in range(2, int(n**0.5) + 1):
        if n % i == 0:
            s.add(i)
            s.add(n // i)

    tmp = sorted(list(s))
    if len(tmp) < 2:
        return 0
    return tmp[-1] + tmp[-2]

for N in range(110_250_000, 110_300_001):
    if M(N) % 10000 == 1002:
        print(N)

Ответ:
\(110254175\)
\(110271687\)
\(110275397\)
\(110281336\)