Пусть \(D(N)\) – пятый по величине (считая с наибольшего) нетривиальный нечётный делитель натурального числа \(N\) (нетривиальными считаются все делители, кроме \(1\) и самого числа). Например, \(D(315) = 21.\) Если у числа \(N\) меньше пяти различных нетривиальных нечётных делителей, то принимаем \(D(N) = 0.\) Найдите \(5\) наибольших натуральных чисел, меньших \(300~000~000,\) для которых \(D(N) > 0.\) В ответе запишите для каждого найденного \(N\) сначала значение \(D(N),\) а затем общее количество нетривиальных нечётных делителей (в порядке возрастания соответствующих чисел \(N).\)
Решение:
Python
from math import isqrt
def divs(N: int) -> int:
ds = {d for x in range(2, isqrt(N) + 1) if N % x == 0
for d in (x, N // x) if d % 2 == 1}
ds = sorted(list(ds))
return ds
ans = []
q = 0
N = 300_000_000
while q < 5:
N -= 1
d = divs(N)
if len(d) > 4:
ans.append((d[-5], len(d)))
q += 1
for x, y in ans[::-1]:
print(x, y)
Ответ:
\(1297 \,\, 6\)
\(12283 \,\, 11\)
\(6521739 \,\, 15\)
\(5809 \,\, 7\)
\(9090909 \,\, 62\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене