(К. Багдасарян) Назовём маской числа последовательность цифр, в которой также могут встречаться символ «\(Р\)», означающий произвольное простое число. Например, маске \(1P2\) соответствуют числа \(1132,\) \(10132,\) \(10032\) и т.д. Среди натуральных чисел, не превышающих \(10^7,\) найдите все числа, соответствующие маске \(3P1,\) делящиеся на \(9797\) без остатка. В ответе запишите в первом столбце таблицы все найденные числа в порядке возрастания, а во втором столбце – соответствующие им результаты деления этих чисел на \(9797.\)
Решение:
Python
from math import isqrt
def is_prime(n):
if n <= 2:
return 2
if n & 1 == 0:
return False
for x in range(3, isqrt(n) + 1, 2):
if n % x == 0:
return False
return True
for n in range(9797, 10**7, 9797):
ns = str(n)
if ns[0] == '3' and ns[-1] == '1' \
and is_prime(int(ns[1:-1])):
print(n, n // 9797)
Ответ:
\(3360371 \,\, 343\)
\(3556311 \,\, 363\)
\(3948191 \,\, 403\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене