Напишите программу, которая перебирает целые числа, большие \(2~400~000,\) в порядке возрастания и ищет среди них числа, представимые в виде произведения ровно трёх различных простых множителей, каждый из которых содержит в своей записи хотя бы одну цифру \(4\) или \(7.\) В ответе запишите первые пять чисел в порядке возрастания, справа от каждого числа запишите его наибольший простой делитель.
Решение:
Python
from math import isqrt
def factor(n):
ans = []
for d in range(2, isqrt(n) + 1):
while n % d == 0:
ans.append(d)
n //= d
if n > 1:
ans.append(n)
return ans
n = 2_400_000
q = 0
while q < 5:
n += 1
divs = factor(n)
if len(divs) == len(set(divs)) == 3:
if all('4' in d or '7' in d for d in map(str, divs)):
print(n, max(divs))
q += 1
Ответ:
\(2400427 \,\, 461\)
\(2400433 \,\, 1117\)
\(2400451 \,\, 419\)
\(2400587 \,\, 20173\)
\(2400601 \,\, 1423\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене