Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
Например, маске \(123{*}4{?}5\) соответствуют числа \(123405\) и \(12300425.\)
Среди натуральных чисел, меньших \(10^9,\) найдите числа, удовлетворяющих маске \(5{*}35{?}5{*}1\) и делящиеся на \(2273,\) у которых сумма цифр – простое число. Запишите в ответе найденные числа в порядке возрастания, справа от каждого числа запишите частное от его деления на \(2273.\)
Решение:
Python
from fnmatch import fnmatch
def is_prime(n):
if n <= 2:
return n == 2
if n & 1 == 0:
return False
for x in range(2, int(n**0.5) + 1):
if n % x == 0:
return False
return True
st = 535051 + (2273 - 535051 % 2273) % 2273
for n in range(st, 10**9, 2273):
if fnmatch(str(n), '5*35?5*1') and is_prime(sum(int(z) for z in str(n))):
print(n, n // 2273)
Ответ:
\(53545061 \,\, 23557\)
\(524351551 \,\, 230687\)
\(535057381 \,\, 235397\)
\(535852931 \,\, 235747\)
\(549354551 \,\, 241687\)
\(557355511 \,\, 245207\)
\(583585931 \,\, 256747\)
\(591359591 \,\, 260167\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене