Schemat blokowy wczytuje dwie liczby a i b, a następnie wykonuje pętlę z warunkiem a > 0. To typowa konstrukcja dla algorytmów iteracyjnych, w których w kolejnych krokach redukuje się wartości wejściowe aż do spełnienia warunku zakończenia.
W gałęzi "TAK" wykonywane są dwie operacje:
- a := a mod b – a przyjmuje resztę z dzielenia a przez b, czyli wartość mniejszą niż b (dla b > 0).
- b := b − a – b jest pomniejszane o nową wartość a.
Kluczowe jest to, że w takim algorytmie utrzymuje się niezmiennik pętli: wartość NWD(a,b) nie zmienia się mimo aktualizacji zmiennych. Intuicyjnie: jeśli liczba d dzieli jednocześnie a i b, to dzieli także resztę (a mod b), a także różnicę b − (a mod b). Dzięki temu w kolejnych iteracjach przechodzimy do "mniejszych" liczb, zachowując ten sam NWD.
Gdy warunek pętli przestaje być spełniony, czyli a = 0, schemat przechodzi do wypisania b. To również jest charakterystyczne dla algorytmu Euklidesa: jeśli jedna z liczb jest równa 0, druga jest największym wspólnym dzielnikiem.
Dlaczego pozostałe odpowiedzi są niepoprawne?
- Sortowanie liczb a i b – sortowanie wymagałoby porównania i ewentualnej zamiany wartości, a nie operacji modulo i odejmowania w pętli prowadzącej do zera.
- Najkrótsza droga między punktami – takie algorytmy pracują na grafach/węzłach i kosztach, a w schemacie nie ma struktur danych ani akumulacji odległości.
- Sprawdzenie poprawności wpisania liczb – walidacja danych zwykle sprawdza zakresy/typy (np. b ≠ 0), a tu wykonywane są systematyczne przekształcenia arytmetyczne prowadzące do wyniku.
Wniosek: schemat realizuje wariant algorytmu Euklidesa, więc służy do obliczenia największego wspólnego dzielnika liczb a i b.