Projekt 10 – NWD

 

W projekcie tym obliczymy największy wspólny dzielnik dwóch liczb używając dwóch wersji algorytmu Euklidesa: z odejmowaniem i z dzieleniem.  

 

1.     Wybierz dwa duszki do projektu.

2.     Pierwszy duszek obliczy NWD dwóch liczb używając algorytmu Euklidesa z odejmowaniem. Euklides wykorzystał prosty fakt, iż NWD liczb a i b  dzieli również ich różnicę. Zatem od większej liczby odejmujemy w pętli mniejszą dotąd, aż obie liczby się zrównają. Wynik to NWD dwóch wyjściowych liczb.

 

Napisz funkcję (zdefiniuj własny bloczek) z dwoma argumentami, a i b, która będzie obliczała NWD(a,b) (na końcu ustawi zmienna NWD na wyliczony NWD(a,b)).

 

 

 

 

3.     W skryptach dla drugiego duszka zdefiniuj bloczek z dwoma argumentami, a i b, w którym obliczony zostanie NWD(a,b) wykorzystujący algorytm Euklidesa z dzieleniem.

·      oblicz c jako resztę z dzielenia a przez b

·      zastąp a liczbą b, następnie b liczbą c

·      jeżeli wartość b wynosi 0, to a jest szukaną wartością NWD, w przeciwnym wypadku przejdź do kroku 1

 

 

 

 

 

4.     Zapytaj użytkownika o liczbę a, potem o liczbę b.

5.     Używając dwóch zdefiniowanych wcześniej bloczków oblicz NWD(a,b) w skryptach dla dwóch różnych duszków. Wyświetl odpowiedź. Porównaj wyniki.

6.     Dodaj zmienną licznik, która będzie liczyć, ile operacji wykonał kot a ile pies podczas obliczania NWD. W obu przypadkach wyświetl wartość tej zmiennej, np. niech dopowiedzą to kot i pies lub dodaj nowe duszki, które powiedzą/pomyślą wartość tej zmiennej.  

7.     Możesz dodać pewne opóźnienia (bloczek czekaj), tak, aby śledzić, jak zmieniają się wartość poszczególnych zmiennych.