Test pierwszości Fermata

Z testwiki
Przejdź do nawigacji Przejdź do wyszukiwania

Test pierwszości Fermataprobabilistyczny test umożliwiający sprawdzenie, czy dana liczba jest złożona, czy prawdopodobnie pierwsza. Jest jednym z najprostszych testów pierwszości i pomimo swoich wad jest wykorzystywany w algorytmach szyfrowania PGP.

Zasada działania

Małe twierdzenie Fermata mówi, że jeśli p jest liczbą pierwszą i a nie dzieli się przez p, to

ap11 (modp).

Aby stwierdzić, czy p jest pierwsza, można wybrać kilka losowych wartości a względnie pierwszych z p i sprawdzić, czy ta równość jest dla nich spełniona. Jeśli dla którejkolwiek z nich nie jest, to na pewno p jest liczbą złożoną. Jeśli wszystkie ją spełniają, p jest prawdopodobnie liczbą pierwszą albo pseudopierwszą

Używając algorytmu szybkiego potęgowania, możemy wykonać to w czasie O(klog3n), gdzie k jest liczbą losowo wybranych a.

Wady

Istnieją liczby złożone (liczby Carmichaela), dla których równość z twierdzenia zachodzi dla wszystkich a, takich że NWD(a,n)=1. Tym samym test ma bardzo duże prawdopodobieństwo uznania takich liczb za pierwsze.

W ogólności, jeśli n nie jest liczbą Carmichaela, wtedy co najmniej połowa a(/n)* nie spełnia równości. Aby to udowodnić, należy założyć, że równość nie jest spełniona dla a i jest spełniona dla a1,a2,,as. Wtedy

(aai)n1an1ain1an1≢1 (modn),

zatem równość nie jest też spełniona dla wszystkich aai dla i=1,2,,s.

Szablon:Teoria liczb