(Ю. Дрождинин) Пусть \(S\) – сумма всех различных простых натуральных делителей целого числа, не считая самого числа. Если таких делителей у числа нет, то считаем значение \(S\) равным нулю. Напишите программу, которая перебирает целые числа, меньшие \(4~444~000,\) в порядке убывания, и ищет среди них такие, для которых значение \(S\) больше \(2~000~000\) и кратно \(123.\) В ответе запишите первые пять найденных чисел в порядке убывания, справа от каждого числа запишите соответствующее ему значение \(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 = 4_444_000
while q < 5:
n -= 1
f = set(factor(n))
f.discard(n)
s = sum(f)
if s > 2_000_000 and s % 123 == 0:
print(n, s)
q += 1
Ответ:
\(4440542 \,\, 2220273\)
\(4437098 \,\, 2218551\)
\(4436114 \,\, 2218059\)
\(4434146 \,\, 2217075\)
\(4430702 \,\, 2215353\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене