Пусть \(S (N)\) – сумма двух наибольших нетривиальных делителей числа \(N\) (не считая единицы и самого числа). Если у числа \(N\) меньше двух таких делителей, то \(S (N)\) считается равным \(0.\) Найдите \(5\) наименьших натуральных чисел, превышающих \(10~000~000,\) для которых \(S (N)\) – простое число. В ответе запишите найденные числа в порядке возрастания, справа от каждого числа запишите соответствующее ему значение \(S(N).\)
Решение:
Python
from math import isqrt
def is_prime(n):
if n <= 2:
return n == 2
if n & 1 == 0:
return False
for x in range(3, isqrt(n) + 1):
if n % x == 0:
return False
return True
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) >= 3:
divs.sort()
S = sum(divs[-3:])
if is_prime(S):
q += 1
print(n, S)
if q == 5:
break
Ответ:
\(10000495 \,\, 2014799\)
\(10000601 \,\, 792131\)
\(10000604 \,\, 7500457\)
\(10000847 \,\, 273059\)
\(10000917 \,\, 4444861\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене