(Л. Шастин) Пусть \(P(N)\) – сумма всех простых делителей числа \(N,\) а \(E(N)\) - сумма всех его чётных делителей. Обозначим \(M(N) = | P(N) – E(N) |\) (модуль разности). Найдите \(5\) наименьших чисел, больших \(100~000~000,\) у которых количество простых делителей совпадает с количеством чётных делителей. В ответе запишите в первом столбце таблицы все найденные числа в порядке возрастания, а во втором столбце — соответствующие им значения \(M(N).\)
Решение:
Python
from math import isqrt
def is_prime(n):
if n <= 2:
return n == 2
if n & 1 == 0:
return False
for i in range(3, int(n ** 0.5) + 1, 2):
if n % i == 0:
return False
return True
q = 0
for n in range(100_000_001, 10**100):
divs = {d for x in range(1, isqrt(n) + 1) if n % x == 0
for d in (x, n // x)}
dp = {d for d in divs if is_prime(d)}
de = {d for d in divs if d & 1 == 0}
if len(dp) == len(de):
q += 1
print(n, abs(sum(dp) - sum(de)))
if q == 5:
break
Ответ:
\(100000034 \,\, 50000017\)
\(100000042 \,\, 50000021\)
\(100000094 \,\, 50000047\)
\(100000118 \,\, 50000059\)
\(100000126 \,\, 50000063\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене