Пусть \(D(N)\) – пятый по величине (считая с наибольшего) нетривиальный делитель натурального числа \(N\) (нетривиальными считаются все делители, кроме \(1\) и самого числа). Например, \(D(1000) = 100.\) Если у числа \(N\) меньше пяти различных нетривиальных делителей, то принимаем \(D(N) = 0.\) Найдите \(5\) наибольших натуральных чисел, меньших \(100~000~000,\) для которых \(D(N) > 0.\) В ответе запишите для каждого найденного \(N\) сначала значение \(D(N),\) а затем общее количество нетривиальных делителей (в порядке возрастания соответствующих чисел \(N).\)
Решение:
Python
from math import isqrt
q = 0
ans = []
for n in range(99_999_999, 0, -1):
divs = list({d for x in range(2, isqrt(n) + 1) if n % x == 0
for d in (x, n // x)})
if len(divs) >= 5:
divs.sort()
q += 1
ans.append((divs[-5], len(divs)))
if q == 5:
break
for d, n in ans[::-1]:
print(d, n)
Ответ:
\(4 \,\, 6\)
\(1181 \,\, 6\)
\(8333333 \,\, 22\)
\(2173913 \,\, 14\)
\(1369863 \,\, 46\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене