(А. Богданов) Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
Найдите все натуральные числа, не превышающие \(10^{10},\) которые соответствуют маске \(1{?}2{*}0{*}2{?}1\) и при этом содержат ровно три делителя. В ответе запишите все найденные числа в порядке возрастания, справа от каждого числа запишите его второй по величине делитель.
Решение:
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
for x in range(int(1020201**0.5), int(1929999292 ** 0.5) + 1):
if is_prime(x):
ns = str(x**2)
if ns[0] == '1' and ns[2] == '2' and ns[-1] == '1' and ns[-3] == '2' \
and '0' in ns[3:-3]:
print(ns, x)
Ответ:
\(152004241 \,\, 12329\)
\(1129027201 \,\, 33601\)
\(1320668281 \,\, 36341\)
\(1628203201 \,\, 40351\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене