Пусть \(M(N)\) – сумма двух наибольших различных натуральных делителей натурального числа \(N,\) не считая самого числа и единицы. Если у числа \(N\) меньше двух таких делителей, то \(M(N)\) считается равным \(0.\) Найдите все такие числа \(N,\) что $$256~501~000 \leqslant N \leqslant 256~551~000,$$ а десятичная запись числа \(M(N)\) заканчивается на \(1203.\) В ответе перечислите все найденные числа \(N\) в порядке возрастания, справа от каждого запишите соответствующее значение \(M.\) Данные отсортируйте по возрастанию значений M.
Решение:
Python
def sum_div(n):
div = set()
for i in range(2, int(n**0.5)+1):
if n % i == 0:
div.add(i)
div.add(n//i)
if len(div) > 3:
break
div = list(div)
div.sort()
return div[-2] + div[-1] if len(div) > 1 else 0
ans = []
for N in range(256_501_000, 256_551_001):
M = sum_div(N)
if M % 10000 == 1203:
ans.append((M, N))
ans.sort()
for M, N in ans:
print(N, M)
Ответ:
\(256522402 \,\, 128261203\)
\(256513274 \,\, 128371203\)
\(256528538 \,\, 164911203\)
\(256530290 \,\, 179571203\)
\(256521604 \,\, 192391203\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене