algorytmika, Matura-informatyka PR


Generowanie kolejnych liczb pierwszych - sito Eratostenesa

Przykład 1.

Sformułuj specyfikację problemu szukania liczb pierwszych w zbiorze od 1 do 20. Przykład do omówienia (kartka 1).

Przykład 2.

Sformułuj specyfikację problemu szukania liczb pierwszych w zbiorze od 1 do 100. Przykład do omówienia (kartka 2).

Kartka 1

Znajdźmy na przykład wszystkie liczby pierwsze od 1 do 20. Liczby złożone będą po kolei "usuwane" w sposób podany niżej. Na początku nasz przedział wygląda następująco:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

Cała idea tego algorytmu polega na tym, że "idziemy" od lewej strony przedziału poczynając od liczby 2 i gdy liczba ta nie została wcześniej skreślona to skreślamy wszystkie jej wielokrotności w danym przedziale oprócz niej samej.

Tak więc zaczynamy od liczby 2. Nie jest ona skreślona, więc skreślamy jej wielokrotności oprócz niej samej. W tym przypadku są to liczby: 4, 6, 8, 10, 12, 14, 16, 18, 20.

Po skreśleniu (usunięciu) wyżej wymienionych liczb otrzymujemy:

1

2

3

 

5

 

7

 

9

 

11

 

13

 

15

 

17

 

19

 

Kolejną liczbę, jaką napotykamy po 2 jest liczba 3. Nie została ona wcześniej skreślona, więc skreślamy wszystkie jej wielokrotności w naszym przedziale od 1 do 20 oprócz niej samej. Proszę zauważyć, iż niektóre wielokrotności liczby 3 zostały już skreślone wcześniej. Liczby, które w tym przypadku skreślimy to: 6, 9, 12, 15, 18. Po tej operacji otrzymamy:

1

2

3

 

5

 

7

 

 

 

11

 

13

 

 

 

17

 

19

 

Kolejną liczbę, jaką napotkamy idąc od lewej to 4. Ponieważ została ona już wcześniej skreślona to nie wykonujemy już żadnych dodatkowych skreśleń.

Proszę zauważyć, że w naszym przedziale zostały już tylko liczby pierwsze. Musimy jeszcze skreślić liczbę 1:

 

2

3

 

5

 

7

 

 

 

11

 

13

 

 

 

17

 

19

 

W sicie, Eratostenesa może pojawić się jeden problem - a mianowicie, do której liczby mamy dojść idąc od lewej od liczby 2, aby w danym przedziale zostały nam tylko liczby pierwsze? Moja odpowiedź brzmi do zaokrąglonego w dół pierwiastka kwadratowego największej liczby z danego przedziału. W naszym przypadku największą liczbą jest 20. Pierwiastek kwadratowy z 20 to około 4,47. Gdy zaokrąglimy tą liczbę w dół to otrzymamy 4. I tylko do tej liczby doszedłem w przykładzie powyżej. Teraz postaram się wytłumaczyć, dlaczego akurat dochodzimy do tej liczby. Każda liczba złożona w danym przedziale to iloczyn dwóch innych liczb (nie muszą być one koniecznie pierwsze). Liczby te mogą być równe sobie - wtedy wartość tych liczb to pierwiastek kwadratowy z danej liczby złożonej. Jednakże, gdy liczby te nie są sobie równe - to jedna jest większa, a druga mniejsza. Mniejsza z tych liczb jest mniejsza od pierwiastka kwadratowego z danej liczby złożonej. Tak, więc, aby skreślić daną liczbę złożoną musimy dojść, (gdy idziemy po kolei od 2) do tej mniejszej liczby, nie musimy wcale dochodzić do tej większej.

Kartka 2

Przypuśćmy, że chcemy znaleźć wszystkie liczby pierwsze wśród liczb od 1 do 100.

  1. Ustawiamy liczby w ciąg:

  1   2   3  4   5   6   7   8   9 10
11 12 13 14 15 16 17 18 19 20
21 2
2 23 24 25 26 27 28 29 30
31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50
51 52 53 54 55 56 57 58 59 60
61 62 63 64 65 66 67 68 69 70
71 72 73 74 75 76 77 78 79 80
81 82 83 84 85 86 87 88 89 90
91 92 93 94 95 96 97 98 99 100

  1. 1 nie jest liczbą pierwszą, więc ją skreślamy.

       2   3   4   5   6  7   8   9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50
51 52 53 54 55 56 57 58 59 60
61 62 63 64 65 66 67 68 69
70
71 72 73 74 75 76 77 78 79 80
81 82 83 84 85 86 87 88 89 90
91 92 93 94 95 96 97 98 99 100

  1. Listę rozpoczyna liczba 2. Jest to liczba pierwsza. Teraz wykreślamy wszystkie liczby większe od 2 i podzielne przez 2.

   2 3   5   7   9
11 13 15 17 19
21 23 25 27 29
31 33 35 37 39
41 43 45 47 49
51 53 55 57 59
61 63 65 67 69
71 73 75 77 79
81 83 85 87 89
91 93 95 97 99

  1. Najmniejszą liczbą jest teraz liczba 3 (jest to liczba pierwsza - gdyby nią nie była, to dzieliłaby się, przez 2, ale wtedy byłaby wykreślona). Skreślamy teraz z listy wszystkie liczby większe od 3 i podzielne przez 3.

   2 3 5 7
11 13 17 19
23 29
31 35 37
41 43 47 49
53 55 59
61 65 67
71 73 77 79
83 85 89
91 95 97

  1. Najmniejszą liczbą na liście jest liczba 5. Jest to liczba pierwsza (argumentacja jak wyżej). Skreślamy teraz wszystkie liczby podzielne przez 5 i większe od 5.

    2 3 5 7
11 13 17 19
23 29
31 37
41 43 47 49
53 59
61 67
71 73 77 79
83 89
91 97

  1. Najmniejszą liczbą na liście jest liczba 7. Jest ona liczbą pierwszą. Wykreślamy wszystkie jej wielokrotności.

    2 3 5 7
11 13 17 19
23 29
31 37
41 43 47
53 59
61 67
71 73 79
83 89
97

Zwróćmy uwagę, że do znalezienia wszystkich liczb pierwszych wystarczy badać liczby pierwsze niewiększe od 0x01 graphic
. Dzieje się tak, dlatego, że biorąc pod uwagę liczbę pierwszą p, zaczynam skreślanie od liczby p2 - mniejsze wielokrotności p są już skreślone (dzielą się przez liczbę mniejszą od p).

Najbliższą liczbą pierwszą jest 11. Zauważmy, że 0x01 graphic
, więc znaleźliśmy wszystkie liczby pierwsze od 1 do 100.

Oto one:

2 3 5 7
11 13 17 19
23 29
31 37
41 43 47
53 59
61 67
71 73 79
83 89
97

   

    1. Na czym polega generowanie kolejnych liczb pierwszych w sicie Eratostenesa?

Algorytm jest dokładnym przepisem rozwiązania problemu lub osiągnięcia zamierzonego celu krok po kroku. Osiągnięcie założonego przez nas celu zależeć będzie również od zaproponowanego sposobu rozwiązywania, a dokładniej - techniki algorytmicznej. Jedną z form przedstawienia algorytmu, dla jego przejrzystości służy tzw. algorytm blokowy

opis krok po kroku rozwiązania postawionego problemu lub sposobu osiągnięcia jakiegoś celu, który powinien być dokładnie określony w postaci umownych bloków decyzyjnych.

W celu lepszego zrozumienia idei algorytmu, zaproponowano zabawę z uczniami w oparciu o przedstawiony schemat algorytmu. Dopiero po przeprowadzonej zabawie i dyskusji, można przystąpić do rysowania schematu blokowego algorytmu oraz do sprawdzenie jego działania na innych przykładach.

Na tablicy wisi plansza złożona ze stu pierwszych liczb naturalnych:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

Uczniowie podchodzą do tablicy i skreślają liczby złożone według podanego algorytmy Eratostenesa.

Następnie uczniowie przeprowadzają zabawę ruchową. Proponujemy, aby uczniowie ustawili się na środku klasy w półkole.

Każdy uczeń dostaje kartkę z liczbą (od 1 do 30). Zgodnie z algorytmem sita Eratostenesa „przesiewają” liczby, które trzymają uczniowie.

  1. Jeden nie jest liczbą pierwszą, więc wyjdzie z koła

  2. Wyjdą z koła uczniowie, którzy mają liczby podzielne przez 2 (oprócz 2).

  3. Następnie wyjdą ci uczniowie, którzy mają liczby podzielne przez 3 (oprócz 3).

  4. Następnie wyjdą z koła liczby podzielne przez 5 (oprócz 5).

Jakie liczby zostały w kole, czyli w sicie? ( rysunek 2).

0x01 graphic

W działaniu sita Eratostenesa widoczny jest analogia do sit stosowanych w praktyce np. wialnia - maszyna do oczyszczania ziarna z plew składa się z kilku sit o różnej gęstości siatki drucianej. Również liczby z przedziału (2,30) przechodzą przez trzy sita zatrzymując odpowiednie wielokrotności 2, 3 i 5.

Liczby pierwsze są tymi, które nie przeszły przez zestaw sit.

  1. Algorytm - sito Eratostenesa

Przyjmujemy spostrzeżenia:

Algorytm sita Eratostenesa

Dane: Liczba naturalna N (dla uproszczenia można założyć, że jest to liczba parzysta równa 2M).

Wyniki: Tablica S[1..M], w której Si = 1, jeśli 2i + 1 jest liczbą pierwszą, a 0 - w przeciwnym przypadku.

Krok 1 {Początkowe wartości zmiennych} Sj : = 1 dla j = 1, 2, ...,M; i : =1; p : = 3, q : = 4.

Krok 2 Jeśli Si = 0, to przejdź do kroku 4.

Krok 3 {Liczba pierwsza p służy do odsiania jej wielokrotności, począwszy od miejsca q w tablicy S}

Przyjmij j : = q. Dopóki j ≤ M, wykonuj Sj : = 0; j : = j + p.

Krok 4 Wykonaj przypisania: i : = i + 1; p : = p + 2; q : = q + 2p - 2. Jeśli q ≤ M, to wróć do kroku 2, a w przeciwnym razie zakończ algorytm.

Przykład działania sita Eratostenesa dla liczby naturalnej N = 100

i

S[i]

p

q

Odsiane liczby

1

1

3

4

9, 15, 21, 27, 33, 39, 45, 51, 57, 63, 69, 75, 81, 87, 93, 99

2

1

5

12

25, 35, 45, 55, 65, 75, 85, 95

3

1

7

24

49, 63, 77, 91

4

0

9

40

p nie jest liczbą pierwszą

5

1

11

60

q > M - koniec algorytmu

Sposób przedstawiania uczniom algorytmu

0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic

Zadanie domowe

  1. Znajdź wszystkie liczby pierwsze metodą sita Eratostenesa z przedziału liczb naturalnych od 1 do 200.

  2. Przetestuj działanie algorytmu Eratostenesa w przedziale od 1 do 500 (dla zainteresowanych).

5.Osiągnięcia ucznia

Uczeń:

Podaj zakres liczb pierwszych M

j : = 1 p : = 3

i : = 1 q : = 4

1 → <j> <0>

j = M

j : = j + 1

<j> <0> → S

S : = 0

j : = q

j > M

0 → <j> <0>

j : = j + p

i : = i + 1

p : = p + 2

q : = q +2p - 2

q ≤ M

Koniec

Start

N

N

N

N



Wyszukiwarka

Podobne podstrony:
Matura Informator Język litewski
06 Algorytmy, Prywatne, Informatyka, Algorytmy
Matura Repetytorium PR Quick Test 2B key
Matura Repetytorium PR Quick Test 7A key
Matura Repetytorium PR Quick Test 2A
Matura Repetytorium PR Quick Test 1A
2008 Odpowiedzi Test przed probna matura Arkusz PR Geografia
Matura Repetytorium PR Quick Test 12A
Matura Repetytorium PR Quick Test 6B
Matura informatyka 2009 próbna
Matura Repetytorium PR Quick Test 5B
Matura informatyka 2009 probna Nieznany
Matura Informator Język ukrainski
Matura Repetytorium PR Quick Test 11B
2015 matura INFORMATYKA poziom rozszerzony TEST II
Matura Repetytorium PR Quick Test 5B key

więcej podobnych podstron