Wir beginnen mit einigen einfachen mathematischen Beobachtungen. Wir stellen fest:
x
N : a = x*d,
dann hat auch jedes Vielfache n*a den Teiler d: n*a = (n*x)*d
der größte gemeinsame Teiler von zwei gegebenen Zahlen a und b ist deren kleinste positive LinearkombinationWir suchen nun durch systematisches Subtrahieren möglichst kleine Kombinationen aufzubauen; das ist korrekt, weil eine Linearkombination von Linearkombinationen wieder eine Linearkombination der Ausgangswerte ist. Kommen wir dabei zum Ende, so haben wir wegen ggT(n,n) = n den gesuchten Wert gefunden; und wir müssen zum Ende kommen, weil unsere Zahlen immer kleiner werden. So kommen wir auf das Verfahren:
PROCEDURE ggT(a, b: CARDINAL): CARDINAL;
(* PRE: a>0, b>0 *)
BEGIN IF a=b THEN RETURN a
ELSIF a>b THEN RETURN ggT(a-b, b)
ELSE RETURN ggT(b-a, a)
END
END ggT;