Маска числа – это последовательность цифр, в которой могут встречаться специальные символы «\(?\)» и «\(*\)». Символ «\(?\)» означает ровно одну произвольную цифру, символ «\(*\)» означает произвольную (в том числе пустую) последовательность цифр. Например, маске \(123{*}4{?}5\) соответствуют числа \(123405\) и \(12376415.\)
Найдите все натуральные числа, не превышающие \(2 \cdot 10^9,\) которые соответствуют маске \(1{*}7{*}1\) и при этом имеют ровно три нетривиальных делителя (не считая \(1\) и самого числа). В ответе запишите все найденные числа в порядке возрастания.
Решение:
Python
from fnmatch import fnmatch
def is_prime(n):
if n == 2:
return True
for x in range(2, int(n**0.5) + 1):
if n % x == 0:
return False
return True
for n in range(2, int((2 * 10**9)**0.25) + 1):
if is_prime(n) and fnmatch(str(n**4), '1*7*1'):
print(n**4)
Ответ:
\(1874161\)
\(12117361\)
\(131079601\)
\(163047361\)
\(1073283121\)
\(1387488001\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене