(PRO100 ЕГЭ) Найдите все натуральные числа, принадлежащие отрезку \([1~000~000~000;~2~000~000~000],\) которые заканчиваются на цифру \(8\) и имеют больше \(100\) различных нечётных делителей (количество чётных делителей может быть любым). И при этом число должно делиться на каждое из чисел: \(7, \, 13, \, 17, \, 23, \, 29,\) но не делиться ни на \(3,\) ни на \(5.\) В ответе запишите найденные числа в порядке возрастания, а справа от каждого числа – его наибольший нечётный делитель.
Решение:
Python
from math import isqrt
base = 7 * 13 * 17 * 23 * 29
st = 1_000_000_000 // base * base
for n in range(st, 2_000_000_000, base):
ns = str(n)
if ns[-1] != '8':
continue
if n % 3 == 0 or n % 5 == 0:
continue
tmp = n
while tmp & 1 == 0:
tmp >>= 1
divs = {d for x in range(1, isqrt(tmp) + 1) if tmp % x == 0
for d in (x, tmp // x)}
if len(divs) > 100:
print(n, tmp)
Ответ:
\(1384741358 \,\, 692370679\)
\(1611748138 \,\, 805874069\)
\(1725251528 \,\, 215656441\)
\(1921302838 \,\, 960651419\)
\(1952258308 \,\, 488064577\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене