Задача #3806

Делители и маски

Уровень ЕГЭ

(С.Якунин) Напишите программу, которая среди чисел больших 20262026 находит те, среди попарных сумм простых множителей которых есть число 2026. В ответе запишите: в левом столбце 5 первых таких чисел по возрастанию, а в правом - соответствующие им наибольшие их простые множители.

Пример: число 6300 можно разложить на простые множители 2, 2, 3, 3, 5, 5, 7. Различные попарные суммы этих простых множителей - 4, 5, 7, 9, 6, 8, 10, 12. Если число простое - таких сумм нет.

Ответ
Войдите, чтобы история ответов и статистика сохранялись.
Решение Нажми, чтобы открыть

Ответ

20269550
1997
20270360
2003
20272632
1439
20276834
1979
20286386
1973

#функция для разложения числа на простые множители
def fact(x):
divs = []
for i in range(2,int(x**0.5)+1):
while x%i==0:
x//=i
divs.append(i)
if x!=1:
divs.append(x)
return divs

for num in range(20262027,30003000):
#print(fact(num))
divis = list(fact(num)) #список простых множителей
sums = [] #попарные суммы
for i in range(len(divis)):
for j in range(i+1, len(divis)):
sums.append(divis[i]+divis[j])
#print(sums)
if 2026 in sums:
print(num,max(divis))
Быстрый переход
Перейти к задаче