• Nie Znaleziono Wyników

3.3 Przesiewanie liczb pierwszych

N/A
N/A
Protected

Academic year: 2022

Share "3.3 Przesiewanie liczb pierwszych"

Copied!
5
0
0

Pełen tekst

(1)

ANDRZEJ RYNGWELSKI

3.3 Przesiewanie liczb pierwszych

DOWIESZ SIĘ

Zawsze warto szukać sposobu na uproszczenie i skrócenie obliczeń. W przypadku poszukiwania liczb pierwszych taki sposób znalazł Eratostenes (ten sam uczony po raz pierwszy wyznaczył z niezłą dokładnością promień Ziemi). Podczas tej lekcji zastosujesz wymyślony przez niego algorytm.

SITO ERATOSTENESA

Poprzednia lekcja została poświęcona wyszukiwaniu liczb pierwszych. Obliczeń było sporo, bo dla każdej kolejnej liczby należało sprawdzić, czy jest ona podzielna przez którąś z liczb od 2 do… Do jakiej liczby? Warunek zakończenia poszukiwania dzielników w pętli powtarzaj aż wyglądał następująco:

dzielnik * dzielnik > liczba.

Dlaczego? Zauważ, że jeśli sprawdza się np. liczbę 16, to gdy znajdzie się dzielnik 2, to oczywiście dzielnikiem jest również 16/2, czyli 8. Następny dzielnik, tj. 4, podniesiony do kwadratu daje 16. Kolejnych dzielników nie warto szukać, bo są one wynikiem dzielenia liczby 16 przez poprzednio znalezione. To spostrzeżenie oszczędza obliczeń.

Sposób Eratostenesa polega na odsiewaniu całych grup liczb, np. liczb parzystych (z wyjątkiem 2), liczb podzielnych przez 3 (z wyjątkiem 3) itd. Przyjrzyj się, jak to działa.

że nie każdy prosty algorytm jest optymalny i że liczba obliczeń w algorytmie ma istotne znaczenie dla jego realizacji, jak zaprogramować w Scratchu sito Eratostenesa.

1. Najpierw należy wypisać wszystkie liczby w podanym zakresie, np. od 1 do 100.

2. Potem należy wykreślić jedynkę, bo ma ona tylko jeden dzielnik.

3. Teraz pora na liczby podzielne przez 2 (z wyjątkiem 2). W ten sposób wykreśla się (odsiewa) prawie połowę liczb, którymi już nie trzeba się zajmować.

4. Dalej należy kolejno wykreślić liczby podzielne przez 3 (z wyjątkiem 3).

5. Liczba 4 została już odsiana, więc następna jest piątka.

WSiPnet » E-podręcznik » Informatyka https://app.wsipnet.pl/podreczniki/strona/157228

(2)

Tego odsiewania było wyraźnie mniej niż obliczeń, które wykonywał program z poprzedniej lekcji.

LISTA KROKÓW I JEJ REALIZACJA W SCRATCHU

Utwórz w Scratchu projekt realizujący sito Eratostenesa dla liczb z zakresu od 1 do 100. Kieruj się opisanymi niżej krokami, które trzeba wykonać.

Rys. 1. Wykreślanie liczby 1 oraz wielokrotności liczb 2, 3 i 5

6. Zostało jeszcze odsianie liczb podzielnych przez 7 (z wyjątkiem 7), czyli 49, 77 i 91 – i zostaną wyłącznie liczby pierwsze.

Weź liczby naturalne od 1 do 100.

W Scratchu: utwórz listę Liczby i wypełnij ją liczbami od 1 do 100, utwórz pomocniczą zmienną liczba.

WSiPnet » E-podręcznik » Informatyka https://app.wsipnet.pl/podreczniki/strona/157228

(3)

Rys. 2. Tworzenie listy Liczby – skrypt zielonej flagi

Wykreśl 1.

W Scratchu: zamień 1 na liście na X.

Powtarzaj od 2 do liczby, której kwadrat jest większy od wybranego zakresu: weź kolejną niewykreśloną liczbę i wykreśl jej wielokrotności.

W Scratchu: utwórz zmienną dzielnik i ustaw ją na 2; powtarzaj, aż dzielnik do kwadratu będzie większy niż zakres: jeżeli element listy równy dzielnikowi nie jest równy X, to usuń jego wielokrotności i zmień dzielnik o 1.

WSiPnet » E-podręcznik » Informatyka https://app.wsipnet.pl/podreczniki/strona/157228

(4)

Rys. 3. Skrypt wykreślający liczby (1 i wielokrotności 2, 3, 5, 7)

Wykreślanie wielokrotności. Powtarzaj do końca zakresu liczb: jeżeli liczba nie jest wykreślona oraz liczba jest podzielna przez dzielnik, ale nie równa dzielnikowi, to wykreśl liczbę.

W Scratchu: zdefiniuj nowy blok Usuń wielokrotności wywoływany z parametrem dzielnik.

WSiPnet » E-podręcznik » Informatyka https://app.wsipnet.pl/podreczniki/strona/157228

(5)

Rys. 4. Skrypt bloku Usuń wielokrotności i wynik jego działania na liście Liczby

Liczby pierwsze w praktyce

Poszukiwanie liczb pierwszych nie jest tylko zabawą. Wielkie liczby pierwsze znajdują zastosowanie m.in. w bankowości (przy szyfrowaniu połączeń internetowych). Oparta jest na nich najpopularniejsza obecnie metoda szyfrowania – RSA.

ZADANIA

1. Sito Eratostenesa jest popularnym algorytmem. Obejrzyj w serwisie Scratcha projekty innych użytkowników, które mają w tytule „sito”.

2. Na podstawie analizy dzielników liczby utwórz projekt wypisujący wszystkie liczby z zakresu od 1 do 100, które mają nieparzystą liczbę dzielników.

3. Zmodyfikuj jeden z projektów wyszukiwania liczb pierwszych (z tej lub z poprzedniej lekcji), tak aby znaleźć liczby pierwsze z zakresu od 1 do 1000.

WSiPnet » E-podręcznik » Informatyka https://app.wsipnet.pl/podreczniki/strona/157228

Cytaty

Powiązane dokumenty