Задача #3497
Делители и маски
(Е. Ширшев) Напишите программу, которая перебирает целые числа, большие 12 365 266, в порядке возрастания и ищет среди них те, которые можно представить в виде произведения ровно пяти различных простых множителей, а сумма этих множителей образует простое число.
В ответе в первом столбце таблицы запишите первые 5 найденных чисел в порядке возрастания, во втором столбце — сумму их простых множителей.
Количество строк в таблице для ответа избыточно.
Войдите, чтобы история ответов и статистика сохранялись.
Решение
Ответ
12366105
313
12366627
587
12366739
223
12366861
293
12366915
571
def to_easy(n):
dels = []
i = 2
while i ** 2 <= n:
if n % i == 0:
dels.append(i)
n //= i
else:
i += 1
dels.append(n)
return dels
def check_easy_numb(n):
for i in range(2, round(n ** 0.5) + 1):
if n % i == 0:
return False
return True
count = 0
for n in range(12_365_267, 10 ** 10):
dels = to_easy(n)
if len(dels) == 5 and len(set(dels)) == 5:
if check_easy_numb(sum(dels)):
print(n, sum(dels), dels)
count += 1
if count == 5:
break