До меня дошли легенды, что есть алгоритм который работает за О(log(n)).
О доблестные программисты, поведайте же мне о нём !!!
Нужда в нём, у меня возникла при попытки решения этой коварной задачи:
№ | Пользователь | Рейтинг |
---|---|---|
1 | tourist | 4009 |
2 | jiangly | 3831 |
3 | Radewoosh | 3646 |
4 | jqdai0815 | 3620 |
4 | Benq | 3620 |
6 | orzdevinwang | 3529 |
7 | ecnerwala | 3446 |
8 | Um_nik | 3396 |
9 | gamegame | 3386 |
10 | ksun48 | 3373 |
Страны | Города | Организации | Всё → |
№ | Пользователь | Вклад |
---|---|---|
1 | cry | 164 |
1 | maomao90 | 164 |
3 | Um_nik | 163 |
4 | atcoder_official | 160 |
5 | -is-this-fft- | 158 |
6 | awoo | 157 |
7 | adamant | 156 |
8 | TheScrasse | 154 |
8 | nor | 154 |
10 | Dominater069 | 153 |
Нужда в нём, у меня возникла при попытки решения этой коварной задачи:
Название |
---|
Решето эратосфена, почитайте алгоритм.
Давайте создадим массив , который будет хранить наименьший простой делитель числа, т.к решето эратосфена работает за $$$O(n (log log n))$$$ Мы будем факторизировать в промежутке от $$$O(log(n))$$$ до $$$sqrt(n)$$$.
Спасибо
Судя по ограничениям, Pollard-rho вполне зайдет. Будет что-то в духе $$$O(N a^{1/4} \log(a))$$$, где $$$a = \max\limits_{i \in [1,N]\cap \mathbb N} a_i$$$ (оценка скорее всего неверна, но достаточно хороша для представления о времени работы алгоритма). В коде это будет как-то так: https://pastebin.com/j4giMndL (реализация функция
is_prime_miller_rabin
,pollard
иfactor_integer
не моя, а kactl'овская). Для скорости я бы еще [вырезано цензурой] добавил прагм и более быстрый ввод-вывод, но мне лень, а для демонстрации этого не нужно.Если говорить об алгоритме факторизации чисел за $$$O(\log n)$$$, то эта будет сложность на запрос. Там еще пред-подсчет есть, который (в простейшем случае) можно иметь оценку $$$O(n \log \log n)$$$ по времени. Более подробно: https://www.geeksforgeeks.org/prime-factorization-using-sieve-olog-n-multiple-queries/. Можно, конечно, сделать этот пред-подсчет более быстрым, например, за $$$O(n)$$$ (см. https://cp-algorithms.com/algebra/prime-sieve-linear.html), но мне было бы лень.