Zum Inhalt springen

Erweiterter euklidischer Algorithmus

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 29. Mai 2005 um 15:23 Uhr durch Rat (Diskussion | Beiträge) (Vorgehen). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Der erweiterte euklidische Algorithmus ist eine Erweiterung des euklidischen Algorithmus. Die Eingabe besteht aus zwei Zahlen a und b und der Algorithmus liefert den größten gemeinsamen Teiler d sowie zwei ganze Zahlen s und t mit d = sa+tb (Lemma von Bézout).

Die Darstellung ist besonders nützlich, wenn a und b teilerfremd (ggT(a,b) = 1) sind. In diesem Fall ist d=1 und s ist das multiplikative Inverse von a modulo b.

Vorgehen

Der Algorithmus sieht wie folgt aus:

  1. Setze m = a, n = b, s = 1, t = 0, u = 0, v = 1
  2. Berechne q und r mit m = q * n + r (Division mit Rest)
  3. Setze m = n, n = r, u' = s - q * u, v' = t - q * v
  4. Setze s = u, t = v, u = u', v = v'
  5. Falls n ≠ 0 gehe zu Schritt 2.

Nach Beendigung ist ggT(a,b)=m=sa+tb.

Man kann dieses Vorgehen in der folgenden Form übersichtlich darstellen:

Man zieht immer von der vorletzten Zeile ein geeignetes Vielfaches der letzten Zeile ab, um die nächste Zeile zu erhalten. Auf der linken Seite der Gleichungen wird der gewöhnliche euklidische Algorithmus durchgeführt, also erhält man schließlich eine Darstellung

Beziehung zu Kettenbrüchen

Die Folge der auftretenden Zahlen liefert die Kettenbruchdarstellung von : Z.B. ergibt sich für und :

Also ist und

Ein kleines Script findet sich unter http://www.mirsky.de/ggt.php. Jeder Schritt wird genau erklärt. Außerdem gibt es noch ein ausführliches Skript mit Quelltext unter [1].