Задание 25. Информатика. ЕГЭ. Статград. 17.12.2024-1
- Просмотры: 925
- Изменено: 1 февраля 2025
Маска числа – это последовательность цифр, в которой могут встречаться специальные символы «\(?\)» и «\(*\)». Символ «\(?\)» означает ровно одну произвольную цифру, символ «\(*\)» означает произвольную (в том числе пустую) последовательность цифр.
Например, маске \(123{*}4{?}5\) соответствуют числа \(123405\) и \(12376415.\)
Найдите все натуральные числа, принадлежащие интервалу \([10^8; \, 2 \cdot 10^8],\) которые соответствуют маске \({?}{*}42{*}81\) и имеют ровно три натуральных делителя. В ответе запишите все найденные числа в порядке возрастания.
Решение:
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 x in range(10**4, int(2**0.5 * 10**4) + 1):
if is_prime(x):
q = x**2
if fnmatch(str(q), '?*42*81'):
print(q)
Ответ:
\(114297481\)
\(141824281\)
\(142587481\)
\(149842081\)