Algorytm Euklidesa pozwala na szybkie znalezienie Największego Wspólnego Dzielnika (NWD) dwóch liczb naturalnych dodatnich. Znając jego wartość, będziemy również w stanie wyznaczyć Najmniejszą Wspólną Wielokrotność (NWW) tych liczb.

Zależność ta jest szczególnie istotna przy znajdowaniu wspólnego mianownika dla dwóch ułamków. Informacja o NWW ich mianowników pozwoli nam określić, przez jaką liczbę musimy pomnożyć ich liczniki i mianowniki, aby sprowadzić je do wspólnego mianownika. Dzięki temu, w kolejnym kroku, będziemy mogli wykonać na nich operację dodawania lub odejmowania.

Zadanie typu maturalnego

Rozwiążemy teraz jedno z zadań typu maturalnego.

Zadanie to zostało stworzone przez CKE i pochodzi ze zbioru zadań maturalnych z informatyki (zadanie nr 18.1), dostępnego na oficjalnej stronie internetowej CKE.

Linia 1. Dane dwukropek. Linia 2. liczby całkowite dodatnie a i b kropka. Linia 3. Wynik dwukropek. Linia 4. Największy wspólny dzielnik liczb a i b kropka. Linia 6. funkcja NWD otwórz nawias okrągły a przecinek b zamknij nawias okrągły. Linia 7. dopóki b wykrzyknik znak równości 0 wykonuj. Linia 8. r znak równości a mod b. Linia 9. a znak równości b. Linia 10. b znak równości r. Linia 12. zwróć a i zakończ.

Przeanalizuj działanie funkcji NWD() i dla wskazanych argumentów podaj liczbę operacji modulooperacja modulooperacji modulo.

a

b

liczba operacji mod w wierszu 8

25

15

116

324

762

282

Naszym celem jest analiza działania funkcji NWD() i podanie liczby wykonań operacji modulo dla argumentów podanych w tabeli.

Dla pierwszej pary zmiennych a i b, czyli NWD(25, 15), pierwsze przejście pętli w funkcji wygląda następująco:

Linia 1. funkcja NWD otwórz nawias okrągły 25 przecinek 15 zamknij nawias okrągły. Linia 2. dopóki b wykrzyknik znak równości 0 wykonuj. Linia 3. r znak równości 25 mod 15 prawy ukośnik prawy ukośnik czyli 10. Linia 4. a znak równości 15. Linia 5. b znak równości 10. Linia 7. zwróć a i zakończ.

Po jednym wykonaniu pętli dopóki liczba wykonań operacji modulo wynosi 1. Z kodu funkcji możemy wywnioskować, że liczba wykonań operacji modulo będzie równa liczbie wykonań pętli dla podanej pary liczb a i b.

Kontynuujmy analizę działania funkcji dla pierwszego przykładu. Po zakończeniu ostatniego przejścia pętli, nasze zmienne mają wartości:

  • a = 15,

  • b = 10,

  • liczba wykonań operacji modulo = 1.

Zmienna b jest w dalszym ciągu różna od 0. Pętla zostanie wykonana jeszcze raz, realizując następującą operację:

Linia 1. r znak równości 15 mod 10 prawy ukośnik prawy ukośnik czyli 5. Linia 2. a znak równości 10. Linia 3. b znak równości 5.

Po tym wykonaniu pętli, nasze zmienne przyjmują wartości:

  • a = 10,

  • b = 5,

  • liczba wykonań operacji modulo = 2.

Zmienna b jest w dalszym ciągu różna od zera. Wykonamy więc jeszcze jedno przejście pętli dopóki, z następującymi operacjami:

Linia 1. r znak równości 10 mod 5 prawy ukośnik prawy ukośnik czyli 0. Linia 2. a znak równości 5. Linia 3. b znak równości 0.

W tym momencie, wartości naszych zmiennych prezentują się tak:

  • a = 5,

  • b = 0,

  • liczba wykonań operacji modulo = 3.

Widzimy więc, że było to ostatnie wykonanie pętli dopóki, ponieważ jej warunek nie jest już spełniany - b osiągnęło wartość 0.

Kończymy pętlę, a tym samym działanie funkcji poprzez zwrócenie wartości argumentu a - czyli 5. Jest to NWD dwóch liczb.

Nie zapominajmy jednak, że zgodnie z treścią zadania, mamy podać, ile razy została wykonana operacja modulo.

Jak już zauważyliśmy, w każdym przejściu pętli dopóki wystąpi jedna taka operacja.

W przypadku liczb 25 i 15 pętla ta wykonała się trzy razy. Tak więc w pierwszym wierszu kolumny liczba operacji mod wpisalibyśmy odpowiednio wartość 3.

Znajdziemy teraz odpowiedzi dla pozostałych dwóch par liczb a i b.

Dla a = 116, b = 324 kolejne reszty z dzielenia r osiągną następujące wartości:

  1. 116,

  2. 92,

  3. 24,

  4. 20,

  5. 4,

  6. 0.

Jest sześć reszt, tak więc operacja modulo wykonała się sześć razy.

Oto wartości r dla ostatniego przykładu z zadania:

  1. 198,

  2. 84,

  3. 30,

  4. 24,

  5. 6,

  6. 0.

Ponownie mamy więc do czynienia z sześcioma wykonaniami operacji modulo. W ten sposób prześledziliśmy działanie algorytmu Euklidesa.

Słownik

operacja modulo
operacja modulo

inaczej: operacja obliczania reszty z dzielenia