Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
Например, маске \(123{*}4{?}5\) соответствуют числа \(123405\) и \(12300425.\)
Среди натуральных чисел, не превышающих \(10^{10},\) найдите все числа, соответствующие маске \(1{?}359{*}0,\) которые делятся на \(4019\) без остатка и у которых сумма цифр – простое число. В ответе запишите все найденные числа в порядке возрастания, справа от каждого числа – результат его деления на \(4019.\)
Решение:
Python
def is_prime(n):
if n <= 2:
return n == 2
if n & 1 == 0:
return False
for i in range(3, int(n ** 0.5) + 1, 2):
if n % i == 0:
return False
return True
st = 103590 + (4019 - 103590 % 4019) % 4019
for n in range(st, 1935999999, 4019):
ns = str(n)
if ns[0] == '1' and ns[2:5] == '359' and ns[-1] == '0':
if is_prime(sum(int(z) for z in ns)):
print(n, n // 4019)
Ответ:
\(193595230 \,\, 48170\)
\(1035977630 \,\, 257770\)
\(1135930160 \,\, 282640\)
\(1335955790 \,\, 332410\)
\(1835959580 \,\, 456820\)
\(1935952300 \,\, 481700\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене