Напишите программу, которая перебирает целые числа, большие \(3~600~000,\) в порядке возрастания и ищет среди них числа, представимые в виде произведения ровно трёх простых множителей, необязательно различных, каждый из которых содержит в своей записи одновременно цифры \(3\) и \(5.\) В ответе запишите первые пять чисел в порядке возрастания, справа от каждого числа запишите его наибольший простой делитель.
Решение:
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 = 3_600_000
q = 0
while q < 5:
n += 1
divs = factor(n)
if len(divs) == 3:
if all('3' in d and '5' in d for d in map(str, divs)):
print(n, max(divs))
q += 1
Ответ:
\(4081477 \,\, 1453\)
\(4278107 \,\, 1523\)
\(4300579 \,\, 1531\)
\(4334287 \,\, 1543\)
\(4362377 \,\, 1553\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене