background image

Liczby Pierwsze - algorytmy

Zajęcia 5

background image

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

background image

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={p

1

,p

2

,…,p

n

}, gdzie p

i

, dla i=1,2,…,n, to wszystkie kolejne liczby 

pierwsze.

Rozważmy liczbę:
                              x=p

1

*p

2

*…*p

n

+1.

Zauważmy, że:
                              x/p

i

=p

1

*p

2

*…*p

i-1

*p

i+1

*…*p

n

+1/p

i

  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>p

i

 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.

background image

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.

background image

Generowanie wszystkich liczb pierwszych z przedziału 

[2,n]

Zadanie 2

Napisz program realizujący powyższy algorytm.

źródło: http://edu.i-
lo.tarnow.pl/inf/utils/001_2008/0116.php

background image

Generowanie kolejnych n liczb pierwszych

Zadanie 3

Napisz program realizujący powyższy algorytm.

źródło: http://edu.i-
lo.tarnow.pl/inf/utils/001_2008/0116.php

background image

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.


Document Outline