(М. Ишимов) Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
Например, маске \(123{*}4{?}5\) соответствуют числа \(123405\) и \(12300405.\)
Среди натуральных чисел, не превышающих \(10^9,\) найдите все числа, соответствующие маске \(15{*}3{*}09\) и имеющие ровно \(9\) делителей. В ответе запишите в первом столбце таблицы все найденные числа в порядке возрастания, а во втором столбце – соответствующие им максимальные делители, не считая самого числа.
Решение:
Python
from math import isqrt
def factor(n):
res = []
for d in range(2, isqrt(n) + 1):
while n % d == 0:
res.append(d)
n //= d
if n > 1:
res.append(n)
return res
for n in range(isqrt(15309) , isqrt(10**9) + 1, 2):
divs = factor(n)
if len(divs) == len(set(divs)) == 2:
cand = divs[0]**2 * divs[1]**2
ns = str(cand)
if ns[:2] == '15' and ns[-2:] == '09' \
and '3' in ns:
print(cand, divs[0] * divs[1]**2)
Ответ:
\(15233409 \,\, 5077803\)
\(153834409 \,\, 1947271\)
\(158835609 \,\, 52945203\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене