(Е. Джобс) Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
Например, маске \(123{*}4{?}5\) соответствуют числа \(123405\) и \(12300425.\)
Среди натуральных чисел, не превышающих \(10^4,\) найдите все числа, соответствующие маске \({*}2{?}2,\) которые можно разложить на произведение ровно \(7\) простых множителей. Например, число \(20\) можно разложить на произведение \(2 \cdot 2 \cdot 5,\) где присутствует три простых множителя. В ответе запишите все найденные числа в порядке возрастания, справа от каждого числа – соответствующий ему максимальный множитель из разложения на простые множители.
Решение:
Python
from fnmatch import fnmatch
def factor(n):
res = []
for x in range(2, int(n**0.5) + 1):
while n % x == 0:
res.append(x)
n //= x
if n > 1:
res.append(x)
return res
for n in range(10, 10**4):
if fnmatch(str(n), '*2?2'):
f = factor(n)
if len(f) == 7:
print(n, max(f))
Ответ:
\(4212 \,\, 13\)
\(5292 \,\, 7\)
\(7232 \,\, 85\)
\(8232 \,\, 7\)
\(8262 \,\, 17\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене