Пусть \(S (N)\) – сумма двух наибольших нетривиальных делителей числа \(N\) (не считая единицы и самого числа). Если у числа \(N\) меньше двух таких делителей, то \(S (N)\) считается равным \(0.\) Найдите \(5\) наименьших натуральных чисел, превышающих \(10~000~000,\) для которых \(S (N)\) меньше, чем \(100~000,\) и десятичная запись этого числа оканчивается на \(112.\) В ответе запишите найденные числа в порядке возрастания, справа от каждого числа запишите соответствующее ему значение \(S(N).\)
Решение:
Python
from math import isqrt
q = 0
for n in range(10_000_001, 10**100):
divs = list({d for x in range(2, isqrt(n) + 1) if n % x == 0
for d in (x, n // x)})
if len(divs) >= 2:
divs.sort()
S = divs[-1] + divs[-2]
if S < 100_000 and S % 1000 == 112:
q += 1
print(n, S)
if q == 5:
break
Ответ:
\(10011007 \,\, 7112\)
\(10012007 \,\, 56112\)
\(10023487 \,\, 22112\)
\(10028327 \,\, 92112\)
\(10042367 \,\, 23112\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене