Напишите программу, которая перебирает целые числа, большие \(6~300~000,\) в порядке возрастания и ищет среди них числа, представимые в виде произведения ровно трёх простых множителей, необязательно различных, каждый из которых содержит в своей записи хотя бы одну цифру \(3\) или \(4.\) В ответе запишите первые пять чисел в порядке возрастания, справа от каждого числа запишите его наибольший простой делитель.
Решение:
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 = 6_300_000
q = 0
while q < 5:
n += 1
divs = factor(n)
if len(divs) == 3:
if all('3' in str(d) or '4' in str(d) for d in divs):
print(n, max(divs))
q += 1
Ответ:
\(6300051 \,\, 2503\)
\(6300057 \,\, 39623\)
\(6300069 \,\, 1543\)
\(6300087 \,\, 9013\)
\(6300101 \,\, 4153\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене