(Ю. Дрождинин) Пусть \(S\) – сумма всех различных простых натуральных делителей целого числа, не считая самого числа. Если таких делителей у числа нет, то считаем значение \(S\) равным нулю. Напишите программу, которая перебирает целые числа, меньшие \(7~612~000,\) в порядке убывания, и ищет среди них такие, для которых значение \(S\) больше \(3~500~000\) и оканчивается на \(863.\) В ответе запишите первые пять найденных чисел в порядке возрастания, справа от каждого числа запишите соответствующее ему значение \(S.\)
Решение:
Python
def factor(n):
ans = []
for i in range(2, int(n**0.5) +1):
while n % i == 0:
ans.append(i)
n //= i
if n > 1:
ans.append(n)
return ans
q = 0
n = 7_612_000
res = []
while q < 5:
n -= 1
f = set(factor(n))
f.discard(n)
s = sum(f)
if s > 3_500_000 and s % 1000 == 863:
res.append((n, s))
q += 1
res.sort()
for n, s in res:
print(n, s)
Ответ:
\(7593722 \,\, 3796863\)
\(7601722 \,\, 3800863\)
\(7605722 \,\, 3802863\)
\(7607722 \,\, 3803863\)
\(7611722 \,\, 3805863\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене