Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
Например, маске \(123{*}4{?}5\) соответствуют числа \(123405\) и \(12300425.\)
Среди натуральных чисел, меньших \(10^9,\) найдите числа, удовлетворяющих маске \(9{*}31{?}5{*}7\) и делящиеся на \(2801,\) у которых сумма цифр – простое число. Запишите в ответе найденные числа в порядке возрастания, справа от каждого числа запишите частное от его деления на \(2801.\)
Решение:
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 = 931057 + (2801 - 931057 % 2801) % 2801
for n in range(st, 10**9, 2801):
if fnmatch(str(n), '9*31?5*7') and is_prime(sum(int(z) for z in str(n))):
print(n, n // 2801)
Ответ:
\(907319527 \,\, 323927\)
\(910316597 \,\, 324997\)
\(931352107 \,\, 332507\)
\(984431057 \,\, 351457\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене