От Проблема с Project Euler 500
Число делителей 120 равно 16. На самом деле 120 является наименьшим числом, имеющим 16 делителей.
Найдите наименьшее число с 2 ** 500500 делителями. Дайте свой ответ по модулю 500500507.
Достаточно просто подсчитать делители n, например. в Python len([i for i in range(1,n+1) if n % i == 0])
. Это O (n).
Я попробовал поиск грубой силы и нашел наименьшее число с 32 делителями 840, но это слишком медленно для проблемы выше. Из неравенства count_divisors(n) <= n
число будет массовым.
Как вы думаете? Есть идеи? Как рассчитать наименьшее число с определенным количеством делителей?
Изменить. Я не думаю, что это дубликат. Этот вопрос более конкретный, он относится к определенному классу гораздо больших чисел. другой вопрос. Его ответы не применимы к этой проблеме, это разная величина.