Всем добрый день! Возникла такая задача: для каждого 1 <= N <= 1 000 000, найти все простые делители. Находить степени этих самых простых делителей необязательно. Есть подозрение, что можно использовать решето Эратосфена и какой-то вспомогательный массив, но не могу завершить размышления. Может это и известная задача, не знаю. Кто поможет?
UPD. Следущий алгоритм медленный: делаем решето Эратосфена, потом проходимся по простым числам и проверяем деление. Разложение за O(sqrt(N)) медленное.
Если я правильно понял задачу, то достаточно быстро получать факторизацию. Этого можно добиться с помощью преподсчета минимального простого делителя. E-maxx
Есть подозрение, что не поместится в память. Но скорее всего это то, что нужно. Спасибо!
А ссылка на задачу есть?
Как-то так :)
Sieve of Erathostenes. Whenever you find a prime p, mark all numbers kp as divisible by it. You can't do any better, since this runs in O(size of your output).
Are you required to explicitely factor all of numbers in 1..N?
The most suitable solution seems to be here.
For those who don't speak Russian:
lp
is lowest prime factor andpr
is with the prime numbers, everything else should be clear from the code.