Задача #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//=idivs.append(i)if x!=1:divs.append(x)return divsfor 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))