30 maja 2012

Faktoryzacja w praktyce

Wyskrobalem program do faktoryzacji w C++.
Niestety, na listach dynamicznych, przez co jest bardzo spawalniany. Ale i tak, kiedy już się rozpędzi i przekroczy pierwiastek sześcienny z liczby, w ciągu każdej minuty sprawdza dzielniki z przedziału zawierającego ok. 9 000 000 liczb, minus narzuty spowodowane zarządzaniem pamięcią. Wszystko to na procesorze o zegarze 1400 MHz.
Narzuty te zmniejszają  krotność sprawdzanych wartości  o parę procent. Można je łatwo zmniejszyć.

Zatem, swoim algorytmem do sprawdzenia, czy liczba n-cyfrowa jest pierwsza, mój algorytm będzie działał nieco dłużej niż n/9 10^{-6} minut, pomijając początkowy etap małych dzielników. Wtedy ze względu na krotność przekształceń czas ten jest kilka razy dłuższy. Trwa to jednak stosunkowo krótko.