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.