Liczby Pierwsze

advertisement
Liczby Pierwsze - algorytmy
Zajęcia 5
Liczby pierwsze i złożone
Liczba pierwsza (z ang. prime number) – to liczba naturalna, która posiada dokładnie
dwa różne dzielniki – liczbę 1 oraz samą siebie.
Kilka kolejnych liczb pierwszych: 2, 3, 5, 7, 11, 13, 17, 19, 23, itd.
Zbiór wszystkich liczb pierwszych oznacza się symbolem P.
Liczby naturalne większe od 1, które nie są pierwsze, nazywa się liczbami złożonymi.
Z podanych definicji wynika, że liczby 0 i 1 nie są ani pierwsze, ani złożone.
Tw.
Każda liczba naturalna większa od 1 daje się jednoznacznie zapisać w postaci iloczynu
skończonego niemalejącego ciągu pewnych liczb pierwszych. Twierdzenie to był w
stanie udowodnić już Euklides (stworzył niezbędne narzędzia), ale uczynił to dopiero
Gauss. Twierdzenie to oznacza, że liczby pierwsze są w pewnym sensie atomami, z
których przy pomocy mnożenia zbudowane są pozostałe liczby.
Przykład:
120=2*3*4*5
960=2*2*3*4*4*5
Twierdzenie Euklidesa
Tw.
Zbiór wszystkich liczb pierwszych P jest zbiorem nieskończonym.
Dowód:
Przypuśćmy, wbrew tezie, że zbiór wszystkich liczb pierwszych P jest zbiorem skończonym.
Niech P={p1,p2,…,pn}, gdzie pi, dla i=1,2,…,n, to wszystkie kolejne liczby pierwsze.
Rozważmy liczbę:
x=p1*p2*…*pn+1.
Zauważmy, że:
x/pi=p1*p2*…*pi-1*pi+1*…*pn+1/pi dla dowolnego i=1,2,…,n.
A zatem x nie dzieli się przez żadną liczbę ze zbioru P.
Mamy teraz dwie możliwości:
1) x jest liczbą pierwszą (wtedy jest ona różna od każdej liczby ze zbioru P, bo x>pi dla dowolnego
i=1,2,..,n),
2) x nie jest liczbą pierwszą (musi ją zatem dzielić jakaś liczba pierwsza p nie będąca oczywiście w
zbiorze P).
W każdym przypadku dostajemy dodatkową liczbę pierwszą leżącą poza zbiorem P.
A zatem zbiór wszystkich liczb pierwszych P jest zbiorem nieskończonym.
Test pierwszości
Liczbę n będziemy próbowali dzielić przez kolejne liczby naturalne z przedziału od 2 do n-1. Jeśli
któraś z tych liczb będzie dzieliła n bez reszty, to liczba n jest liczbą złożoną (zatem nie pierwszą) i
algorytm możemy zakończyć z wynikiem negatywnym. Jeśli żadna z liczb od 2 do n-1 nie dzieli
liczby n, to n jest liczbą pierwszą. Algorytm kończymy z wynikiem pozytywnym.
Zadanie 1
Napisz program realizujący powyższy algorytm.
Generowanie wszystkich liczb pierwszych z przedziału [2,n]
Zadanie 2
Napisz program realizujący powyższy algorytm.
źródło: http://edu.ilo.tarnow.pl/inf/utils/001_2008/0116.php
Generowanie kolejnych n liczb pierwszych
Zadanie 3
Napisz program realizujący powyższy algorytm.
źródło: http://edu.ilo.tarnow.pl/inf/utils/001_2008/0116.php
Praca domowa:
Zadanie
Istnieje prosty sposób poprawiający szybkość sprawdzania, czy dana liczba naturalna n jest
pierwsza. A mianowicie, w celu sprawdzenia, czy dana liczba naturalna n jest pierwsza wystarczy
dzielić ją przez kolejne liczby naturalne ze zbioru {2,3,…,[sqrt(n)]}, gdzie [sqrt(n)] – to część
całkowita z liczby sqrt(n). Napisz program realizujący ten algorytm.
Download