R12192efrJ5bH
Grafika przedstawia dwa splecione symbole węży. Jeden jest niebieski, a drugi żółty.

Algorytm Euklidesa

Logo języka Python
Źródło: Dnu72, dostępny w internecie: commons.wikimedia.org, licencja: CC BY-SA 4.0.

Algorytm Euklidesa opisuje metodę znajdowania największego wspólnego dzielnika dwóch liczb naturalnych. Nazwa pochodzi od greckiego matematyka Euklidesa, który jako pierwszy opisał algorytm w IV w p.n.e., chociaż nie był jego autorem. Problem wyznaczania NWD rozwiązywany jest na wiele sposobów, w tym materiale wykorzystamy wersję opartą na odejmowaniu.

NWD

Największy wspólny dzielnik (NWD) dwóch liczb naturalnych a i b większych od 0 to największa liczba naturalna d, która jest dzielnikiem każdej z nich, czyli dzieli je bez reszty. Przyjmijmy, że będziemy ją oznaczać jako d = NWD(a, b).

NWD ma wiele zastosowań, m.in. pozwala skracać ułamki zwykłe do postaci, w której licznik i mianownik są liczbami względnie pierwszymi, czyli NWD(a, b) = 1.

Algorytm Euklidesa z zastosowaniem odejmowania

Skonstruujemy algorytm, który obliczy największy wspólny dzielnik dwóch dodatnich liczb naturalnych.

Specyfikacja algorytmu:

Dane:

  • a, b – dodatnie liczby naturalne

Wynik:

  • d - dodatnia liczba naturalna, NWD(a, b)

Do rozwiązania postawionego zadania użyjemy algorytmu Euklidesa w wersji z odejmowaniem.

Przykład 1

Przeanalizujmy wyznaczanie NWD według algorytmu Euklidesa z wykorzystaniem odejmowania dla danych: a = 4, b = 10.

Powtórzenia

a

b

działanie

1

4

10

b = 10 - 4

2

4

6

b = 6 - 4

3

4

2

a = 4 - 2

4

2

2

-

Liczba powtórzeń: 3.
Wynik: NWD (4, 10) = 2

Z powyższego przykładu wynika, że dopóki liczby a i b są różne, w każdym powtórzeniu sprawdzamy, która liczba jest większa. Jeżeli a > b, obliczamy a = a - b, w przeciwnym razie wyliczamy b = b - a. Kiedy a i b są równe, wynikiem jest dowolna z tych liczb.

Zapiszmy algorytm w postaci listy kroków:

  1. Wczytaj a, b.

  2. Jeżeli a jest równe b, przejdź do kroku 5.

  3. Jeżeli a > b, zmiennej a przypisz a - b, w przeciwnym razie b przypisz b - a.

  4. Przejdź do kroku 2.

  5. Wypisz a i zakończ algorytm.

Przeanalizujmy również schemat blokowy algorytmu:

R7eTw2k5l821C
Schemat blokowy algorytmu
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Wyrażenie a != b interpretujemy jako „a różne od b”.

Z obydwu sposobów zapisu algorytmu wynika, że na początku pobieramy dane wejściowe, czyli dwie dodatnie liczby całkowite. Następnie porównujemy je i większą pomniejszamy o mniejszą. Operacje te powtarzają się dopóki liczby a i b są różne. Kiedy zrównają się, wyprowadzamy wynik, tj. dowolną z tych liczb, i kończymy.

Notatnik

RwQTyLx3QQNTf
Miejsce na Twoje notatki: (Uzupełnij).

Animacja

Polecenie 1

Zapoznaj się z animacją, która pokazuje, w jaki sposób możemy uzyskać odpowiedź na pytanie o to, ile trzeba wykonać operacji odejmowania, zanim znajdziemy największy wspólny dzielnik z wykorzystaniem algorytmu Euklidesa.

R1E3bvJEBiR8S
Animacja pod tytułem Największy wspólny dzielnik

Program nwd_odejmowanie_licznik.py zaprezentowany w animacji:

RtHYN7flOUvq1

Plik do pobrania z kodem źródłowym programu.

Plik PY o rozmiarze 588.00 B w języku polskim
1
Polecenie 2

Uruchom program nwd_odejmowanie_licznik.py i przetestuj jego działanie dla podanych danych:

Linia 1. kratka Pierwszy zestaw danych. Linia 2. a znak równości 8. Linia 3. b znak równości 32. Linia 5. kratka Drugi zestaw danych. Linia 6. a znak równości 8. Linia 7. b znak równości 2848. Linia 9. kratka Trzeci zestaw danych. Linia 10. a znak równości 2. Linia 11. b znak równości 10. Linia 13. kratka Czwarty zestaw danych. Linia 14. a znak równości 2. Linia 15. b znak równości 22222. Linia 17. kratka Piąty zestaw danych. Linia 18. a znak równości 100. Linia 19. b znak równości 200.
1
Polecenie 3

Do wykonania polecenia wykorzystaj następujące dwa zestawy danych:

Linia 1. kratka Pierwszy zestaw danych. Linia 2. a znak równości 34. Linia 3. b znak równości 16. Linia 5. kratka Drugi zestaw danych. Linia 6. a znak równości 16. Linia 7. b znak równości 34.
R1dQ7DWSQpJk9
Wysłuchaj fragmentu książki innego filozofa, Oswalda Spenglera, pt. Zmierzch Zachodu (1918). Zastanów się i wyjaśnij tezę, iż cywilizacja jest dopełnieniem i zakończeniem kultury. Jak ma się ona do kryzysu Zachodu? (Uzupełnij).

Zestaw ćwiczeń interaktywnych

RY9rpifYMr52W
Ćwiczenie 1
Przykładowy wygląd zakładki zadania. Pod poleceniem znajdują się panele z tekstem z miejscem do oznaczenia prawidłowej odpowiedzi. Poniżej znajduje się panel z napisem SPRAWDŹ a pod nim napis Pokaż odpowiedź.
Źródło: Robert Bednarz, licencja: CC BY 3.0.
REjm0EzD1sX4T
Ćwiczenie 2
Przykładowy wygląd zakładki zadania. Pod poleceniem znajdują się panele z tekstem z miejscem do oznaczenia prawidłowej odpowiedzi. Poniżej znajduje się panel z napisem SPRAWDŹ a pod nim napis Pokaż odpowiedź.
Źródło: Robert Bednarz, licencja: CC BY 3.0.
RRvpBsyDPhSUv
Ćwiczenie 3
Przykładowy wygląd zakładki zadania. Pod poleceniem znajdują się panele z tekstem z miejscem do oznaczenia prawidłowej odpowiedzi. Poniżej znajduje się panel z napisem SPRAWDŹ a pod nim napis Pokaż odpowiedź.
Źródło: Robert Bednarz, licencja: CC BY 3.0.
RARugbyugq6pi
Ćwiczenie 4
Przykładowy wygląd zakładki zadania. Pod poleceniem znajdują się panele z tekstem z miejscem do oznaczenia prawidłowej odpowiedzi. Poniżej znajduje się panel z napisem SPRAWDŹ a pod nim napis Pokaż odpowiedź.
Źródło: Robert Bednarz, licencja: CC BY 3.0.
1
Ćwiczenie 5
Rq5QSmwpt0Ywx
Wysłuchaj fragmentu książki innego filozofa, Oswalda Spenglera, pt. Zmierzch Zachodu (1918). Zastanów się i wyjaśnij tezę, iż cywilizacja jest dopełnieniem i zakończeniem kultury. Jak ma się ona do kryzysu Zachodu? (Uzupełnij).
1
Ćwiczenie 6
R1Z6NGZTF4C4R
Wysłuchaj fragmentu książki innego filozofa, Oswalda Spenglera, pt. Zmierzch Zachodu (1918). Zastanów się i wyjaśnij tezę, iż cywilizacja jest dopełnieniem i zakończeniem kultury. Jak ma się ona do kryzysu Zachodu? (Uzupełnij).
R1VFoXMOoCetq
Ćwiczenie 7
Przykładowy wygląd zakładki zadania. Pod poleceniem znajdują się panele ułożone po cztery w dwóch rzędach. Każdy z paneli zawiera treści do połączenia w pary. Poniżej znajduje się panel z napisem SPRAWDŹ a pod nim napis Pokaż odpowiedź.
Źródło: Robert Bednarz, licencja: CC BY 3.0.
1
Ćwiczenie 8

Zastanów się: która para liczb wymaga więcej odejmowań: 100 i 99 czy 100 i 50? Uzasadnij odpowiedź.

11
Ćwiczenie 9

Wykonaj kolejne ćwiczenia.

R1A9wBV4KXzaF
Źródło: GroMar, licencja: CC BY 3.0.