Задача #1792
Делители и маски
Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
- символ «?» означает ровно одну произвольную цифру;
- символ «*» означает любую последовательность цифр произвольной длины; в том числе «*» может задавать и пустую последовательность.
Например, маске 123*4?5 соответствуют числа 123405 и 12300405.
Среди натуральных чисел, не превышающих 107, найдите все простые числа, соответствующие маске 3?1111*.
В ответе запишите все найденные числа в порядке возрастания.
Количество строк в таблице для ответа избыточно.
Войдите, чтобы история ответов и статистика сохранялись.
Решение
Ответ
311111
361111
3011117
3011119
3311117
3611119
3811117
3911111
Видео по задаче
from fnmatch import fnmatch
def is_prime(x):
if x == 1:
return False
for d in range(2, int(x**0.5)+1):
if x % d == 0:
return False
return True
for x in range(1, 10**7+1):
if fnmatch(str(x), '3?1111*'):
if is_prime(x):
print(x)