(Ю. Дрождинин) Напишите программу, которая перебирает целые числа, меньшие \(987654321,\) в порядке убывания и ищет среди них такие, которые можно представить в виде произведения тринадцати не обязательно различных простых множителей, сумма которых содержит цифру \(1.\) В ответе запишите в первой строке таблицы первые пять найденных чисел в порядке убывания, а во втором столбце – для каждого из них соответствующий наибольший из найденных множителей.
Решение:
Python
def factor(n):
ans = []
for i in range(2, int(n**0.5) +1):
while n % i == 0:
ans.append(i)
n //= i
if n > 1:
ans.append(n)
return ans
q = 0
n = 987_654_321
while q < 5:
n -= 1
f = factor(n)
if len(f) == 13 and '1' in str(sum(f)):
print(n, max(f))
q += 1
Ответ:
\(987654144 \,\, 160751\)
\(987650496 \,\, 1601\)
\(987648768 \,\, 3323\)
\(987644928 \,\, 16921\)
\(987640704 \,\, 47\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене