Erweiterter Euklidischer Algorithmus Der erweiterte Euklidische Algorithmus beruht auf dem folgenden Satz (Bachet de Méziriac) Seien a, b ∈ Z, nicht beide gleich 0. Dann gibt es ganze Zahlen s, t mit ggT(a, b) = sa + tb. Beweis: Ist ggT(a, b) = sa+tb, so ist ggT(−a, b) = (−s)(−a)+tb und ggT(a, −b) = sa+(−t)(−b). Daher können wir zum Beweis des Satzes a, b ≥ 0 annehmen. Wegen ggT(a, b) = ggT(b, a) und ggT(a, 0) = 1 · a + 0 · 0 können wir außerdem a ≥ b > 0 annehmen. Wir setzen a0 = a und a1 = b. Beim normalen Euklidischen Algorithmus wird nun durch wiederholte Division mit Rest auf folgende Weise der ggT von a0 = a und a1 = b bestimmt: a0 = q1 a1 + a2 , . . . , an−2 = qn−1 an−1 + an , an−1 = qn an + 0. Dann ist an = ggT(a0 , a1 ). Wir zeigen nun durch Induktion die Existenz von uj , vj ∈ Z mit aj = uj a0 + vj a1 für j = 0, . . . , n. Sei u0 = 1, v0 = 0 und sei u1 = 0, v1 = 1. Dann gilt die Behauptung für j = 0, 1. Sei nun j ≥ 2 und es gelte aj−2 = uj−2 a0 + vj−2 a1 sowie aj−1 = uj−1 a0 + vj−1 a1 . Dann ist aj = aj−2 − qj−1 aj−1 = (uj−2 − qj−1 uj−1 )a0 + (vj−2 − qj−1 vj−1 )a1 , also der Induktionsschluss für j. Wegen an = ggT(a0 , a1 ) folgt nun die Behauptung mit s = un , t = v n . Aus dem Beweis des Satzes von Bachet de Méziriac ergibt sich unmittelbar die Gültigkeit des folgenden erweiterten Euklidischen Algorithmus, den wir nur für den Fall a, b > 0 formulieren. Der allgemeine Fall ist wie zu Beginn des obigen Beweises leicht darauf zurückzuführen. Dabei verwenden wir folgende Bezeichnungen: Sind x und y ganze Zahlen, y 6= 0, x = qy + r, 0 ≤ r < |y| (Division mit Rest), so ist q = x div y und r = x mod y. Eingabe: Natürliche Zahlen a, b, a > b. (1) Setze x := a, y := b, s1 := 1, s2 := 0, s := 0, t1 := 0, t2 := 1, t := 1. (2) Solange x mod y 6= 0, wiederhole: g := x div y, r := x mod y; s := s1 − gs2 , t := t1 − gt2 ; s1 := s2 , s2 := s, t1 := t2 , t2 := t; x := y, y := r. Ausgabe: y (= ggT(a, b)), s, t (y = sa + tb).