Wir beginnen mit einigen einfachen mathematischen Beobachtungen. Wir stellen fest:
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;