Algorytm Fermata

metoda rozkładu liczby na czynniki pierwsze

Algorytm Fermata – metoda faktoryzacji, czyli rozkładu liczby na czynniki pierwsze.

Metoda ta szybko znajduje rozkład n jeśli jego dzielniki są bliskie pierwiastkowi kwadratowemu z n. Z powodu istnienia tej metody, tworząc klucze kryptograficzne oparte na iloczynach liczb pierwszych (RSA), unika się iloczynów niewiele różniących się liczb.

Działanie algorytmu polega na szukaniu pary liczb a i b takich że

Tę różnicę można przedstawić jako iloczyn (a + b)(a − b); Jeśli żaden z tych czynników nie jest równy jeden, otrzymujemy faktoryzację n. Warto zauważyć, że dla każdego nieparzystego n istnieje taka para liczb. Jeśli n=cd, to

W najgorszym przypadku algorytm Fermata może działać wolniej niż naiwne szukanie dzielników n, dlatego nie ma on praktycznego zastosowania. Jego zasada działania stanowi jednak podstawę znacznie efektywniejszych algorytmów faktoryzacji, takich jak sito kwadratowe i GNFS.

Algorytm

Algorytm Fermata

Wejście: liczba NWyjście: dzielnik liczby N najbliższy pierwiastkowiJeśli N jest kwadratem liczby naturalnej   return sqrt(N);  /*Znaleziono dzielnik*/w przeciwnym razie   r := ceil(sqrt(N));   e := r^2 - N;    u := 2r + 1; v := 1;   Dopóki nie znaleziono dzielnika      Jeśli  e=0         return (u-v)/2; /*Znaleziono dzielnik*/      w przeciwnym razie         Dopóki e<>0            Dopóki e<0               e:=e+u;               u:=u+2;            Dopóki e>0               e:=e-v;               v:=v+2;

Zobacz też