(А. Кабанов) Обозначим через \(S(N)\) сумму простых делителей целого числа \(N,\) не считая самого числа. Если таких делителей у числа нет, то считаем значение \(S(N)\) равным нулю. Найдите первые \(7\) целых чисел, больших \(32~500~000,\) для которых значение \(S(N)\) не равно нулю и кратно \(145.\) В ответе запишите найденные числа в порядке возрастания, справа от каждого запишите соответствующее значение \(S(N).\)
Решение:
Python
def is_prime(n):
if n < 2:
return False
if n == 2:
return True
for i in range(2, int(n ** 0.5) + 1):
if n % i == 0:
return False
return True
def S(N):
div_prime = set()
for i in range(2, int(N ** 0.5) + 1):
if N % i == 0:
d = N // i
if is_prime(d):
div_prime.add(d)
if is_prime(i):
div_prime.add(i)
return sum(div_prime) if div_prime else 0
i = 0
n = 32_500_000
while i < 7:
n += 1
t = S(n)
if t and t % 145 == 0:
print(n, t)
i += 1
Ответ:
\(32500280 \,\, 2755\)
\(32500301 \,\, 58290\)
\(32500440 \,\, 1450\)
\(32500623 \,\, 17545\)
\(32500665 \,\, 722245\)
\(32500700 \,\, 7975\)
\(32500834 \,\, 4785\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене