Мне кажется, что шаг № 2 данного алгоритма не будет всем этим эффективным подход. У Вас нет разумного ожидания, что это является главным.
кроме того, предыдущий ответ, предлагающий Решето Эратосфена, является совершенно неправильным. Я просто записал две программы в фактор 123456789. Каждый был основан на Решете, каждый был основан на следующем:
1) Test = 2
2) Current = Number to test
3) If Current Mod Test = 0 then
3a) Current = Current Div Test
3b) Largest = Test
3c) Goto 3.
4) Inc(Test)
5) If Current < Test goto 4
6) Return Largest
Эта версия была 90x быстрее, чем Решето.
вещь на современных процессорах тип операционных вопросов намного меньше, чем количество операций, не говоря уже о том, что алгоритм выше может работать в кэше, Решето не может. Решето использует много операций, зачеркивающих все составные числа.
Примечание, также, что мое деление факторы, поскольку они определяются, уменьшает пространство, которое должно быть протестировано.
I've enabled library-profiling: True
in my ~/.cabal/config
file. From then on, any new installations will automatically enable profiling.
Unfortunately that still means I had to manually reinstall for the old packages already installed. Although, after a while of doing this manually, I now have most packages reinstalled with profiling enabled...