*(К. Багдасарян) Напишите программу, которая перебирает целые числа, большие \(5~200~000,\) в порядке возрастания и ищет среди них числа, представленные в виде произведения ровно \(9\) простых множителей, не обязательно различных. При этом общее количество делителей числа должно быть кратно \(90.\) В ответе в первом столбце таблицы запишите первые \(5\) найденных чисел в порядке возрастания, а во втором столбце – для каждого из чисел соответствующий им наибольший простой делитель.
Решение:
Python
def factor(x):
ans = []
for i in range(2, int(x ** 0.5) + 1):
while x % i == 0:
ans.append(i)
x //= i
if x > 1:
ans.append(x)
return ans
q = 0
n = 5_200_000
while q < 5:
n += 1
div = factor(n)
if len(div) == 9:
p = {x: div.count(x) for x in set(div)}
m = 1
for x in p.values():
m *= 1 + x
if m % 90 == 0:
print(n, max(div))
q += 1
Ответ:
\(5207472 \,\, 43\)
\(5208300 \,\, 643\)
\(5209200 \,\, 1447\)
\(5211248 \,\, 23\)
\(5214384 \,\, 739\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене