Na schemacie blokowym widać pętlę sterowaną warunkiem a > b. Po wczytaniu dodatnich liczb całkowitych a i b algorytm powtarza jedną operację: a = a − b, ale tylko wtedy, gdy a jest większe od b. Gdy w pewnym momencie otrzymamy a ≤ b, algorytm kończy pętlę i wyświetla a.
Taki mechanizm jest klasycznym sposobem obliczania reszty z dzielenia (modulo) bez użycia dzielenia: odejmujemy dzielnik b od dzielnej a tak długo, jak długo "mieści się" on w a. Ostatecznie pozostaje wartość mniejsza lub równa b, czyli właśnie to, co interpretujemy jako resztę po odjęciu wielokrotności b.
- Dlaczego nie jest to iloraz? Iloraz wymagałby zliczania liczby odejmowań (np. zmiennej licznika). Tutaj nic nie jest zliczane, a na wyjściu pojawia się wyłącznie zredukowana wartość a.
- Dlaczego nie jest to różnica a i b? Różnica byłaby pojedynczym odejmowaniem (a − b). Schemat wykonuje odejmowanie wielokrotnie w pętli, aż do spełnienia warunku stopu.
- Dlaczego nie jest to NWD? W algorytmie Euklidesa (wersja odejmowaniowa) występuje rozgałęzienie: gdy a > b odejmuje się b od a, a gdy b > a odejmuje się a od b; pętla trwa zwykle do momentu a = b. Tutaj zmienia się tylko a, a b pozostaje stałe, a zakończenie następuje przy a ≤ b, co jest typowe dla obliczania reszty.
Wskazówka egzaminacyjna: zawsze sprawdź co jest wypisywane (tu: a) oraz jaki jest warunek pętli (tu: a > b). Te dwa elementy najczęściej pozwalają odróżnić modulo od NWD.