Пусть \(S\) – сумма всех различных простых натуральных делителей целого числа, не считая самого числа. Если таких делителей у числа нет, то считаем значение \(S\) равным нулю. Напишите программу, которая перебирает целые числа, меньшие \(5~123~000,\) в порядке убывания, и ищет среди них такие, для которых значение \(S\) больше \(1~000~000\) и оканчивается на \(319.\) В ответе запишите первые пять найденных чисел в порядке возрастания, справа от каждого числа запишите соответствующее ему значение \(S.\)
Решение:
Python
def S(n):
ans = set()
t = n
for i in range(2, int(n**0.5) + 1):
while n % i == 0:
ans.add(i)
n //= i
if n > 1:
ans.add(n)
if t in ans:
ans.remove(t)
return sum(ans) if ans else 0
q = 0
x = 5_123_000
ans = []
while q < 5:
x -= 1
s = S(x)
if s > 1_000_000 and s % 1000 == 319:
ans.append((x, s))
q += 1
ans.sort()
for x, s in ans:
print(x, s)
Ответ:
\(5098634 \,\, 2549319\)
\(5104634 \,\, 2552319\)
\(5110634 \,\, 2555319\)
\(5116634 \,\, 2558319\)
\(5121268 \,\, 1280319\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене