Diskrete Strukturen

Erweiterter euklidischer Algorithmus

Berechnet den größten gemeinsamen Teiler zweier ganzer Zahlen samt der Bézout-Koeffizienten λ und μ — optional in ℤ_p zur Bestimmung des modularen Inversen.

Ergebnis

ggT(252, 198) = 18

Bézout-Darstellung: 18 = 4 · 252 + -5 · 198

Rechenweg

SchrittDivisionλμ
1252 = 1 · 198 + 5410
2198 = 3 · 54 + 3601
354 = 1 · 36 + 181-1
436 = 2 · 18 + 0-34

Erklärung

Motivation

Der euklidische Algorithmus bestimmt den größten gemeinsamen Teiler (ggT) zweier ganzer Zahlen durch wiederholte Division mit Rest. Der erweiterte euklidische Algorithmus leistet mehr: Er liefert zusätzlich zwei ganzzahlige Koeffizienten λ\lambda und μ\mu, mit denen sich der ggT als Linearkombination der beiden Ausgangszahlen schreiben lässt. Genau diese Koeffizienten benötigt man, um in Zp\mathbb{Z}_p ein multiplikatives Inverses zu berechnen — die Grundlage von RSA, der Lösung linearer Kongruenzen und des chinesischen Restsatzes.

Formale Definition

Für a,bZa, b \in \mathbb{Z} besagt das Lemma von Bézout, dass es ganze Zahlen λ,μ\lambda, \mu gibt mit

λa+μb=gcd(a,b).\lambda \cdot a + \mu \cdot b = \gcd(a, b).

Der erweiterte euklidische Algorithmus berechnet ein solches Paar (λ,μ)(\lambda, \mu) konstruktiv. Er führt die euklidische Division

a=qb+r,0r<b,a = q \cdot b + r, \qquad 0 \le r < b,

iterativ aus und ersetzt (a,b)(a, b) in jedem Schritt durch (b,r)(b, r). Parallel werden die Koeffizienten über die Rekursion

λk+1=λk1qkλk,μk+1=μk1qkμk\lambda_{k+1} = \lambda_{k-1} - q_k\,\lambda_k, \qquad \mu_{k+1} = \mu_{k-1} - q_k\,\mu_k

mitgeführt, beginnend mit (λ0,μ0)=(1,0)(\lambda_0, \mu_0) = (1, 0) und (λ1,μ1)=(0,1)(\lambda_1, \mu_1) = (0, 1). Sobald der Rest 00 erreicht, ist der vorletzte Wert der ggT, und die zugehörigen λ,μ\lambda, \mu erfüllen die Bézout-Identität.

Modulares Inverses in Zp\mathbb{Z}_p

Ist gcd(a,p)=1\gcd(a, p) = 1, so folgt aus λa+μp=1\lambda \cdot a + \mu \cdot p = 1 direkt

λa1(modp),\lambda \cdot a \equiv 1 \pmod{p},

das heißt λ\lambda (reduziert nach [0,p)[0, p)) ist das Inverse a1a^{-1} in Zp\mathbb{Z}_p. Im Rechner findest du es, indem du b=pb = p und den Modulus pp setzt.

Durchgerechnetes Beispiel

Wir betrachten das Standardbeispiel a=252a = 252, b=198b = 198 — die Vorbelegung des Rechners oben. Die Divisionen mit Rest lauten:

252=1198+54198=354+3654=136+1836=218+0\begin{aligned} 252 &= 1 \cdot 198 + 54 \\ 198 &= 3 \cdot 54 + 36 \\ 54 &= 1 \cdot 36 + 18 \\ 36 &= 2 \cdot 18 + 0 \end{aligned}

Der letzte von 00 verschiedene Rest ist gcd(252,198)=18\gcd(252, 198) = 18. Rückwärts eingesetzt erhält man die Bézout-Darstellung

18=4252+(5)198,18 = 4 \cdot 252 + (-5) \cdot 198,

also λ=4\lambda = 4 und μ=5\mu = -5. Genau diese Werte zeigt die Schritttabelle des Rechners.

Häufige Fehler

  • Vorzeichen vergessen: λ\lambda oder μ\mu ist oft negativ. Über Z\mathbb{Z} ist das korrekt; erst für ein Inverses in Zp\mathbb{Z}_p reduziert man nach [0,p)[0, p).
  • Falscher Restbereich: Bei der euklidischen Division muss 0r<b0 \le r < b gelten. Ein negativer Rest liefert eine falsche Schrittfolge.
  • Inverses ohne Teilerfremdheit: Nur wenn gcd(a,p)=1\gcd(a, p) = 1 existiert a1a^{-1} in Zp\mathbb{Z}_p. Andernfalls hat die Kongruenz ax1a x \equiv 1 keine Lösung.
  • aa und bb vertauscht: Der ggT bleibt gleich, doch λ\lambda und μ\mu tauschen ihre Rollen — achte darauf, welcher Koeffizient zu welcher Zahl gehört.