(А. Кабанов) Обозначим через \(S\) сумму простых делителей целого числа, не считая самого числа. Если таких делителей у числа нет, то считаем значение \(S\) равным нулю. Напишите программу, которая перебирает целые числа, большие \(250000\) в порядке возрастания и ищет среди них такие, для которых значение \(S\) не равно нулю и кратно \(17.\) Программа должна найти первые \(5\) таких чисел. Для каждого из них в отдельной строке сначала выводится само число, затем значение \(S.\) Строки выводятся в порядке возрастания найденных чисел.
Решение:
Python
def prime_divs(n):
divs = set()
for x in range(2, int(n**0.5)+1):
while n % x == 0:
divs.add(x)
n //= x
if n > 1:
divs.add(n)
return divs
q = 0
for x in range(250001, 10**10):
pr = prime_divs(x)
pr.discard(x)
if pr and sum(pr) % 17 == 0:
print(x, sum(pr))
q += 1
if q == 5:
break
Ответ:
\(250003 \,\, 19244\)
\(250015 \,\, 1649\)
\(250028 \,\, 62509\)
\(250059 \,\, 170\)
\(250062 \,\, 663\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене