Rodzaje liczb pierwszych
left arrow right arrow

Algorytmy liczb pierwszych

Najprostszą metodą aby zbadać czy liczba jest pierwsza jest sprawdzenie jej dzielników. Aby zbadać liczbę n sprawdzamy kolejne liczby naturalne należące do przedziału [2,..., √n].

Jeżeli okazało by się, że któraś z tych liczb jest dzielnikiem naszej liczby n, oznacza to, że nasza liczba nie jest pierwsza.

Jednak teraz pojawia się pytanie dlaczego wystarczy sprawdzić tylko liczby od 2 do √n

Przenalizujmy to na przykładzie liczb: 23, 33 i 36.

√23 ≈ 4,8

D23 = {1, |4,8|, 23}

√33 ≈ 5,7

D33 = {1, 3, |5,7|, 11, 33}

√36 = 6

D36 = {1, 2, 3, 4, 6, 9, 12, 18, 36}

Można łatwo zauważyć, że liczba n ma tyle samo dzielników większych √n jak i mniejszych od √n. Dzięki tym przykładom można zauważyć, że jeśli jedynym dzielnikiem mniejszym lub równym √n jest 1 to liczba ta jest pierwsza.

Powyższą metodą można sprawdzić pierwszość każdej liczby naturalnej większej od 1, jednak w porównaniu do testu Lucasa-Lehmera czas wykonania tego algorytmu dla bardzo dużych liczb jest dłuższy.

Poniżej można wpisać dowolną liczbę i sprawdzić to czy jest pierwsza oraz to jak działa ten algorytm.

(Dla n < 1 000 000, wyświetlany jest cały algorytm, a w przypadku n ≥ 1 000 000 wyświetlany jest tylko wynik działania algorytmu oraz czas jego działania.).


Sito Eratostenesa jest to algorytm przypisywany Eratostenesowi z Cyreny wymyślony już w III w. p.n.e. służący do wyznaczania liczb pierwszych z zadanego przedziału [2;n].

Działanie sita polega na wybraniu ze zbioru [2;n] najmniejszej liczby czyli 2 i wykreśleniu wszystkich jej wielokrotności większej od niej, czyli 4,6,8,10,.....

Z pozostałych liczb wybieramy kolejną najmniejszą nie wykreśloną czyli 3 i ponownie wykreślamy wszystkie jej wielokrotności czyli: 6,9,12,15,..... Niektóre liczby takie jak 6 lub 12 będą skreślone jeszcze raz czym się nie przejmujemy.

Tak samo robimy z kolejną najmniejszą niewykreśloną liczbą czyli 5.

Proces powtarzamy tak długo, gdy liczba i, której wielokrotności chcemy wykreślać jest większa od √n.

Dla danej liczby n wszystkie wykreślonej liczby mniejsze lub równe n są liczbami pierwszymi.

Przedstawienie działania sita Eratostenesa

Autor animacji - mgr inż. Adrian Zapała

Poniżej można wpisać dowolną liczbę n, dla której sito znajdzie wszystkie liczby pierwsze mniejsze lub równe n


Zdjęcie Eratostenesa
Eratostenes
(Źródło zdjęcia : Wikipedia Commons, licencja: Public Domain)

Test Lucasa-Lehmera jest testem pierwszości dla liczb Mersenne'a. Test ten został ułożony przez Edwarda Lucasa w 1856, a następnie ulepszony przez niego w 1878. Podany wniosek stwierdzał, że liczba 2p-1 jest liczbą pierwszą wtedy gdy jest dzielnikiem liczby wyrazu Lp-1 ciągu określonego następująco:

L1=4

Ln= Ln-12-2

Nie wiadomo, jak Lucas wymyślił tę własność. Nie potrafił jej również w żaden sposób udowodnić.

Warunek podany przez Lucasa został udowodniony dopiero w XX wieku przez Amerykanina Derricka Henry'ego Lehmera i od tego czasu nosił nazwą testu Lucasa-Lehmera.

Ten właśnie test jest wykorzystywany przez serwis GIMPS do znajdowania dużych liczb pierwszych Mersenne’a.

Zaletą tego algorytmu są takie, że działa bardzo szybko i dla przykłady liczbę 289-1 posiadającą 27 cyfr potrafi określić jako liczbę pierwszą w ciągu 1ms!

Jego główną wadą jest fakt, że używać można go tylko dla liczb Mersenne’a.

Poniżej można sprawdzić działanie testu Lucasa-Lehmera. Poniżej można wprowadzić liczbę n, która będzie n-tą liczbą Mersenne’a i sprawdzić działanie testu oraz czy ta liczba jest pierwsza.

(Dla n < 70, wyświetlany jest cały algorytm, a w przypadku n ≥ 70 wyświetlany jest tylko wynik działania algorytmu oraz czas jego działania).


Zdjęcie Edwarda Lucasa
Edward Lucas
(Źródło zdjęcia : Wikipedia Commons, licencja: Public Domain)
Zdjęcie Derrick Henry'ego Lehmera
Derrick Henry Lehmer
(Źródło zdjęcia : Wikipedia Commons, autor: George M. Bergman , licencja: CC BY-SA 4.0)
Strzałka prowadząca na górę strony