Der Algorithmus von EUKLID berechnet den größten gemeinsamen Teiler zweier
natürlicher Zahlen
. Die grundlegende, iterativ angewendete Rechenoperation dabei ist modulare
Division.36
Algorithmus 1 beschreibt das klassische Verfahren [Knu98, Sho05, CP05, MvV92, Ber84].
Es beginnt unter der Voraussetzung
mit einer Modulo-Division
. Im
nächsten Schritt wird
als Modul verwendet und
berechnet, wonach
folgt usw. . Diese (wegen
) absteigende Sequenz endet wenn
wird37
– das Ergebnis
befindet sich dann in
.
Beweis
Jeder Iterationsschritt kann in der Umkehrung (vgl. Restklassenbeziehung 3.2 in
Abschnitt 3) als
geschrieben werden. So gesehen wird durch den Algorithmus der folgende Abstieg vorgenommen:
bis verschwindet.
Warum ein gemeinsamer Faktor von
und
ist, wird klar wenn man die Folge rückwärts
betrachtet. In der letzten Zeile steht
, also teilt
den Rest
(oder kürzer
).
Wenn
aber als Faktor in
enthalten ist, dann kann man
auf der rechten Seite der vorletzten
Gleichung ausklammern, weshalb es auch als Faktor in
vorkommen muß. Dies setzt sich bis in
die erste Gleichung fort (sämtliche Divisionsreste
enthalten folglich
als Teiler), in der
die Startbedingung
und
verankert ist. Deshalb ist der gemeinsame Teiler
sowohl in
als auch
enthalten.
Viel kürzer kann man damit argumentieren, daß die Modulo-Division
eine GCD erhaltende Operation ist. Denn mit der Zerlegung
gilt ausgehend von
Formel 3.2:
d. h. der gemeinsame Teiler in
und
ist auch in
wieder
enthalten.38
Damit wirklich den größten gemeinsamen Teiler stellt, muß es überhaupt alle gemeinsamen Teiler
enthalten. Mit dem Ziel dies nachzuweisen betrachten wir nochmals die Folge beginnend mit der
vorletzten Gleichung, welche nach
umgestellt wird. Ersetzt man darin
mit Hilfe der
vorvorletzten Gleichung und fährt aufsteigend fort, so erhält man eine lineare Darstellung für
,
welche auf ganzen Zahlen sowie
und
beruht.
Mit Hilfe von Formel 4.3, welche auch Satz von BéZOUT genannt
wird,39
kann jetzt relativ einfach bewiesen werden, daß wirklich der größte gemeinsame Teiler ist. Nehmen
wir dazu an, es gäbe einen weiteren gemeinsamen Teiler
. Dann würde dieser (auf der rechten
Seite von Gleichung 4.3) als Faktor von
und
auszuklammern sein und deshalb (wenn
man die linke Seite betrachtet) als Teiler von
auftreten. Mit anderen Worten stecken
alle weiteren Teiler (schon) in
, weshalb nur dieser der größte gemeinsame Teiler sein
kann.
Hinweis
Es existieren unendlich viele lineare Darstellungen für als Linearkombination von
und
(vgl.
auch die kurze Betrachtung zu diophantischen Gleichungen auf Seite 117). Jede Substitution der Art
und
, mit
erfüllt BéZOUT’s Identität 4.3 ebenso.
Die kleinsten Werte für und
zeichnen sich folglich durch die Relationen
und
aus. Um sie zu ermitteln kann man entweder
und
sukzessive von
und
subtrahieren/addieren
oder man reduziert die BéZOUT-Kofaktoren mit Hilfe von
bzw.
und folgender
Formeln:40
Der erweiterte euklidische Algorithmus erlaubt eine effiziente Berechnung der BéZOUT-Kofaktoren
und
zusammen (und gleichzeitig) mit dem größten gemeinsamen Teiler (siehe
auch [Knu98, Sho05, CP05, Ber84]). Dazu berücksichtigt er einige Erkenntnisse aus dem vorigen
Abschnitt, insbesondere daß:
Durch Induktion ergibt sich aus
![]() | (4.5) |
wenn man und
berücksichtigt:
Vergleich mit Ausgangsformel 4.5 erlaubt die Bestimmung von und
.
Mit den Startwerten und
(gewährleistet
) bzw.
und
(ebenso
für
) kann man den erweiterten euklidischen Algorithmus 2 formulieren.
Er endet ganz genauso wie Algorithmus 1 bei , ermittelt aber zusätzlich die BéZOUT-Kofaktoren
und
sowie die teilerfremden Anteile
und
. Letztere findet man
wegen
am Ende in
und
. Dies wird relativ schnell
aus
ersichtlich, wenn man auf beiden Seiten der letzten Gleichung das kleinste gemeinsame Vielfache anvisiert.
Hinweis
Als Ergänzung zum Hinweis von Seite 77 kann man sogar feststellen, daß die „Wahl“ von nicht
unbedingt mit einer Modulo-Division verbunden sein muß. Etwas anders könnte man
einfach so
wählen, daß
Den steilsten Abstieg erreicht man allerdings, wenn
im jeweiligen
Iterationsschritt maximal ist. Dies ist aber unter der Voraussetzung
genau bei einer
Modulo-Division
der Fall. Ansonsten ist jeder Wert
geeignet — einzig die Konvergenzgeschwindigkeit nimmt mit kleineren Werten von
ab.41
Für Polynome mit Koeffizienten aus kann man ganz ähnlich verfahren [HMV04,
2.3.6],[Sho05, 17.3], [CP05, 2.2.1], [Ber84, 2.1]. Mit Rückblick auf den Hinweis von Seite 83 muß
man nur folgendes beachten:
Der binäre GCD-Algorithmus kommt im Gegensatz zum klassischen euklidischen Algorithmus ohne
Divisionen aus [CP05, Knu98, Ste67, Wel01]. Statt dessen wird (beginnend mit
und
) durch Subtraktion und Halbierung eine stetige Reduktion der Argumente
und
vorgenommen, welche letztlich zum größten gemeinsamen Teiler
führt.42
Der Algorithmus endet spätestens dann, wenn im Schritt eines der beiden Argumente
oder
verschwindet (im obigen Fall beispielhaft für
). Das Reduktionsschema zeigt
Tabelle 4.1.
![]() | ![]() | ![]() | Begründung |
gerade | ![]() | gemeinsamer Teiler ist 2 |
|
gerade | ungerade | ![]() | 2 ist kein gemeinsamer Teiler |
ungerade | gerade | ![]() | 2 ist kein gemeinsamer Teiler |
ungerade, ![]() | ![]() |
|
|
ungerade, ![]() | ![]() | siehe
Fall
|
|
![]() | ![]() | ![]() |
|
![]() | ![]() | ![]() |
|
Der so ermittelte größte gemeinsame Teiler muß am Schluß nur noch mit
multipliziert werden (also um
Bit verschoben), was auch Algorithmus 4 entsprechend
wiedergibt.44
Wir können deshalb in den Betrachtungen zum erweiterten binären GCD-Algorithmus (siehe
nächste Abschnitte) immer voraussetzen, daß
oder
ungerade ist.
Algorithmus nach KALISKI46 [Kal95] Betrachtet man das Reduktionsschema des binären GCD-Algorithmus, so kann man verschiedenste lineare Transformationen der Art
definieren, wobei sich die einzelnen Betrachtungsweisen durch unterschiedliche Werte in den
Koeffizienten unterscheiden. Bei jedem Schritt sind so und
als lineare Funktion von
und
darstellbar, die Ausgangsgrößen
und
deshalb als lineare Funktionen von
und
.
Durch Einsetzen von und
in folgende Gleichung,
gefolgt von einem Koeffizientenvergleich, kann man für die konkreten Reduktionsfälle die jeweilige
Transformationen der Linearfaktoren ableiten (siehe Tabelle 4.2). Am Beispiel ,
soll das Vorgehen exemplarisch verdeutlicht werden.
Aus den Transformationen nach Tabelle 4.2 kann man außerdem die Determinante
bestimmen.
![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
gerade | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
|
gerade | ungerade | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
ungerade | gerade | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
ungerade, ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
|
ungerade, ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
|
Um den Zusammenhang mit den BéZOUT-Koeffizienten in
herzustellen, stellen wir die Formeln 4.6 und 4.7 nach
und
um. Dazu werden beide
Gleichungen mit den Linearfaktoren der jeweils anderen multipliziert und dann wechselweise
voneinander subtrahiert.
Schließt man den Fall aus, daß und
gerade sind (
, vgl. Anmerkungen auf Seite 92),
dann kann für den letzten Iterationsschritt
, in Abhängigkeit davon ob
oder
zuerst
verschwindet, folgendermaßen konkretisiert werden:
An diesem Punkt stellen wir jedoch fest, daß es sich bei den Größen ,
,
und
nicht um
die Kofaktoren von
, sondern um eine Linearfaktordarstellung von
handelt.47
Um aus ,
und
,
die BéZOUT-Koeffizienten
und
zu bestimmen, sind zusätzliche
Korrekturschritte nötig, welche in [Kal95] auch Korrekturphase (oder Phase II) genannt werden.
Ziel ist es dabei, die rechte Seite der letzten Gleichung durch
zu dividieren (oder in
Schritten wiederholt durch 2). Da die linke Seite immer eine gerade Zahl ist, können folgende
Schlußfolgerungen im Falle
gezogen werden (falls
war, äquivalent für
und
):48
die Reduktion bzw.
vornehmen, ohne daß sich die
Gleichung ändert. Man wandelt jedoch die ungerade Zahl
bzw.
in eine gerade Zahl,
die dann (wie gewünscht) durch
teilbar ist. Die Ursache liegt einerseits darin begründet,
daß die linke (und demzufolge auch rechte) Seite der Gleichung
immer eine gerade Zahl repräsentiert und andererseits, entweder oder/und
als ungerade
vorausgesetzt wurden. Berücksichtigt man die folgenden Gesetzmäßigkeiten:
dann sind genau drei Fälle konstruierbar, in denen oder
ungerade ist.
In allen diesen Varianten führt aber die Addition bzw.
zu einer geraden Zahl, womit
sich das Korrekturverfahren bestätigt.
Als Ergebnis kann man Algorithmus 5 formulieren, wobei außerdem folgende Anmerkungen berücksichtigt wurden:
schlußfolgern, d. h. bei und
handelt es sich im Fall
(gleichermaßen für
,
im
Fall
) um die teilerfremden Faktoren
Algorithmus nach PENK [Knu98, Exercise 4.5.2.39], [MvV92, 14.4.3]
Dieser Algorithmus stellt und
als lineare Funktion von
und
dar, letztlich wird also
von
auf
geschlossen.
Vorteilhaft wirkt sich aus, daß im letzten Reduktionsschritt (wenn oder
verschwindet)
und
bzw.
und
direkt die gesuchten BéZOUT-Kofaktoren
,
darstellen.
Durch Einsetzen von und
(entsprechend Tabelle 4.1) in die Gleichungen
kann man für den jeweiligen Reduktionsfall die zugehörige Transformationen der Linearfaktoren
ableiten. Wieder am Beispiel ,
soll das Vorgehen veranschaulicht werden
(
und
sind ungerade,
).
Vergleich von linker und rechter Seite läßt den Schluß zu:
Die anderen Kombinationen können genau nach demselben Schema abgeleitet werden. Tabelle 4.3 faßt die Ergebnisse in übersichtlicher Form zusammen.51
![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
gerade | ungerade | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
ungerade | gerade | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
ungerade, ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
|
ungerade, ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
|
Dabei tritt allerdings wieder das bekannte Problem auf: Wie kann man die Ganzzahligkeit des jeweiligen Linearfaktoren bei der Halbierung wahren? Die Antwort haben wir schon beim vorangegangenen Algorithmus geliefert – indem die Ausgangsgleichungen 4.8 und 4.9 folgendermaßen erweitert:
und dadurch ungerade Zahlen ,
bzw.
,
in gerade umwandelt.
Beschränken wir uns auf die Kombinationen nach Tabelle 4.3, in denen und
verändert werden
(äquivalent für
und
). Für den Fall, daß
gerade und
ungerade ist (zweite Zeile in
4.3), können wir auf die Argumentation von Seite 100 zurückgreifen (Phase II der Methode nach
KALISKI). Sie erlaubt uns die Subtraktion/Addition von
und
für den Fall, daß
oder
ungerade ist. Die Situation, daß
und
ungerade sind (vorletzte Zeile in 4.3), kann man durch
gedankliche Verzögerung der Halbierung in den nächsten Iterationsschritt erklären. Wählt man als
modifizierten Einzelschritt
(und entsprechend
,
), so
reduziert sich die Fragestellung wieder auf eine gerade Zahl
, also auf den
vorangegangenen Fall.
Als Ergebnis der Ausführungen kann man Algorithmus 6 formulieren. Der Vorteil des Algorithmus (gegenüber KALISKI’s) liegt vor allem darin, daß keine Korrekturphase nötig ist. Nachteilig für eine praktische Umsetzung ist die notwendige Vorzeichen-Arithmetik.