Пусть \(S\) – сумма всех натуральных делителей целого числа, не считая единицы и самого числа.
Пусть \(K\) – количество всех различных простых делителей целого числа, не считая самого числа.
Напишите программу, которая перебирает целые числа, превышающие \(4~555~705\) и не оканчивающиеся на \(3,\) в порядке возрастания и ищет среди них такие, которые можно представить в виде суммы чисел соответствующих им значений \(S, \, K\) и некоторого натурального числа, оканчивающегося на \(23.\)
В ответе запишите первые пять найденных чисел в порядке возрастания.
Решение:
Python
from math import isqrt
def S(n):
divs = {d for x in range(2, isqrt(n) + 1) if n % x == 0
for d in (x, n // x)}
return sum(divs)
def K(n):
divs = set()
for x in range(2, isqrt(n) + 1):
while n % x == 0:
divs.add(x)
n //= x
if n > 1:
divs.add(n)
return len(divs)
n = 4_555_705
q = 0
while q < 5:
n += 1
if n % 10 == 3:
continue
r = n - S(n) - K(n)
if r > 0 and r % 100 == 23:
print(n)
q += 1
Ответ:
\(4556054\)
\(4556805\)
\(4558124\)
\(4558712\)
\(4559054\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене