www.wikidata.de-de.nina.az
Der euklidische Algorithmus ist ein Algorithmus aus dem mathematischen Teilgebiet der Zahlentheorie Mit ihm lasst sich der grosste gemeinsame Teiler zweier naturlicher Zahlen berechnen Das Verfahren ist nach dem griechischen Mathematiker Euklid benannt der es in seinem Werk Die Elemente beschrieben hat Der grosste gemeinsame Teiler zweier Zahlen kann auch aus ihren Primfaktorzerlegungen ermittelt werden Ist aber von keiner der beiden Zahlen die Primfaktorzerlegung bekannt so ist der euklidische Algorithmus das schnellste Verfahren zur Berechnung des grossten gemeinsamen Teilers Der euklidische Algorithmus lasst sich nicht nur auf naturliche Zahlen anwenden Vielmehr kann damit der grosste gemeinsame Teiler von zwei Elementen eines jeden euklidischen Rings berechnet werden Dazu zahlen beispielsweise Polynome uber einem Korper Inhaltsverzeichnis 1 Der klassische Algorithmus 1 1 Beschreibung durch Pseudocode 2 Moderner euklidischer Algorithmus 2 1 Beispiel 2 2 Beschreibung durch Pseudocode 2 2 1 Rekursive Variante 2 2 2 Iterative Variante 2 3 Programmierung 2 4 Korrektheit des Algorithmus 3 Historische Entwicklung 4 Laufzeitanalyse 5 Euklidischer Algorithmus und Kettenbruchzerlegung 6 Andere Zahlensysteme 6 1 Rationale und reelle Zahlen 6 2 Polynome 6 2 1 Polynome mit Koeffizienten aus einem faktoriellen Ring 7 Varianten 8 Siehe auch 9 Weblinks 10 EinzelnachweiseDer klassische Algorithmus Bearbeiten Wenn CD aber AB nicht misst und man nimmt bei AB CD abwechselnd immer das kleinere vom grosseren weg dann muss schliesslich eine Zahl ubrig bleiben die die vorangehende misst Euklid Die Elemente Herausgegeben von Clemens Thaer Wissenschaftliche Buchgesellschaft Darmstadt VII Buch 2 nbsp Beispiel ggT 44 12 4Euklid berechnete den grossten gemeinsamen Teiler indem er nach einem gemeinsamen Mass fur die Langen zweier Linien suchte Dazu zog er wiederholt die kleinere der beiden Langen von der grosseren ab Dabei nutzt er aus dass sich der grosste gemeinsame Teiler zweier Zahlen oder Langen nicht andert wenn man die kleinere von der grosseren abzieht Ist die Differenz von a displaystyle a nbsp und b displaystyle b nbsp sehr gross sind unter Umstanden viele Subtraktionsschritte notwendig Hippasos von Metapont benutzte schon vor Euklid diese so genannte Wechselwegnahme geometrisch fur den Beweis der Inkommensurabilitat bei gewissen regelmassigen n Ecken Im Quadrat oder im regelmassigen Funfeck etwa gibt es keinen gemeinsamen Teiler Mass einer Seite mit der Diagonalen Heutzutage wird in der Regel der weiter unten beschriebene Divisions Algorithmus verwendet bei dem die Schritte 2 und 3 dadurch ersetzt werden dass man an Stelle der Differenz von m displaystyle m nbsp und n displaystyle n nbsp fur r displaystyle r nbsp den Rest bei der Division von m displaystyle m nbsp durch n displaystyle n nbsp nimmt Ein weiterer Vorteil dieser Variante ist dass man sie auf beliebige euklidische Ringe zum Beispiel Polynomringe uber einem Korper ubertragen kann in denen der klassische Algorithmus nicht funktioniert Beschreibung durch Pseudocode Bearbeiten Der klassische Algorithmus hier in Pseudocode fur nichtnegative ganze Zahlen a und b dargestellt EUCLID OLD a b 1 wenn a 0 dann 2 Ergebnis b 3 sonst 4 solange b 0 5 wenn a gt b dann 6 a displaystyle leftarrow nbsp a b 7 sonst 8 b displaystyle leftarrow nbsp b a 9 10 11 Ergebnis a 12 Dieser Algorithmus kann auch in einer rekursiven Version angegeben werden EUCLID OLD RECURSIVE a b 1 wenn b 0 dann 2 Ergebnis a 3 sonst 4 wenn a 0 dann 5 Ergebnis b 6 sonst 7 wenn a gt b dann 8 Ergebnis EUCLID OLD RECURSIVE a b b 9 sonst 10 Ergebnis EUCLID OLD RECURSIVE a b a 11 12 13 Moderner euklidischer Algorithmus BearbeitenHeutzutage ersetzt man die im klassischen Algorithmus auftretenden wiederholten Subtraktionen eines Wertes jeweils durch eine einzige Division mit Rest Der moderne euklidische Algorithmus fuhrt nun in jedem Schritt solch eine Division mit Rest aus Er beginnt mit den beiden Zahlen a displaystyle a nbsp und b r 0 displaystyle b r 0 nbsp deren grosster gemeinsamer Teiler bestimmt werden soll a q 1 r 0 r 1 displaystyle a q 1 cdot r 0 r 1 nbsp In jedem weiteren Schritt wird mit dem Divisor und dem Rest des vorhergehenden Schritts eine erneute Division mit Rest durchgefuhrt und zwar so lange bis eine Division aufgeht das heisst der Rest Null ist r 0 q 2 r 1 r 2 displaystyle r 0 q 2 cdot r 1 r 2 nbsp r 1 q 3 r 2 r 3 displaystyle r 1 q 3 cdot r 2 r 3 nbsp displaystyle vdots nbsp dd r n 1 q n 1 r n 0 displaystyle r n 1 q n 1 cdot r n 0 nbsp Der Divisor r n displaystyle r n nbsp der letzten Division ist dann der grosste gemeinsame Teiler ggT a b r n displaystyle operatorname ggT a b r n nbsp Da sich die Zahlen in jedem zweiten Schritt mindestens halbieren ist das Verfahren auch bei grossen Zahlen extrem schnell Beispiel Bearbeiten nbsp Animation des euklidischen Algorithmus fur den grossten gemeinsamen Teiler ggT 1071 462 21 Der grosste gemeinsame Teiler von 1071 displaystyle color OliveGreen 1071 nbsp und 462 displaystyle color BurntOrange 462 nbsp wird mit dem euklidischen Algorithmus wie folgt berechnet 1071 2 462 147 462 3 147 21 147 7 21 0 displaystyle begin array rcll color OliveGreen 1071 amp amp 2 cdot color BurntOrange 462 amp amp color MidnightBlue 147 color BurntOrange 462 amp amp 3 cdot color MidnightBlue 147 amp amp color OrangeRed 21 color MidnightBlue 147 amp amp 7 cdot color OrangeRed 21 amp amp 0 end array nbsp Der grosste gemeinsame Teiler von 1071 displaystyle color OliveGreen 1071 nbsp und 462 displaystyle color BurntOrange 462 nbsp ist somit 21 displaystyle color OrangeRed 21 nbsp Beschreibung durch Pseudocode Bearbeiten Im Folgenden wird der moderne Euklidische Algorithmus sowohl in einer rekursiven als auch einer iterativen Variante beschrieben Dabei sind a displaystyle a nbsp und b displaystyle b nbsp jeweils die beiden Zahlen deren grosster gemeinsamer Teiler berechnet werden soll Rekursive Variante Bearbeiten EUCLID a b 1 wenn b 0 dann 2 Ergebnis a 3 sonst 4 Ergebnis EUCLID b Divisionsrest a durch b siehe Modulo Funktion 5 Iterative Variante Bearbeiten EUCLID a b 1 solange b 0 2 h displaystyle leftarrow nbsp Divisionsrest a durch b Siehe Modulo Funktion 3 a displaystyle leftarrow nbsp b 4 b displaystyle leftarrow nbsp h 5 6 Ergebnis a Programmierung BearbeitenDas folgende Programm in der Programmiersprache C zeigt die Implementierung der rekursiven Variante und der iterativen Variante Die zwei Varianten werden jeweils in einer Funktion mit den Parametern a und b implementiert Bei der Ausfuhrung des Programms wird die Hauptfunktion main verwendet die die Eingabe der beiden Zahlen uber die Konsole ermoglicht und dann das Ergebnis der beiden Varianten dort ausgibt include lt iostream gt using namespace std int gcdRecursive int a int b if b 0 return a else return gcdRecursive b a b Rekursiver Aufruf der Methode int gcdIterative int a int b if a 0 return b while b 0 int h a b a b b h return a Hauptfunktion die das Programm ausfuhrt int main int a b Deklaration der lokalen Variablen cout lt lt Erste Zahl Ausgabe auf der Konsole cin gt gt a Eingabe uber die Konsole cout lt lt Zweite Zahl Ausgabe auf der Konsole cin gt gt b Eingabe uber die Konsole cout lt lt Grosster gemeinsamer Teiler rekursiv lt lt gcdRecursive a b lt lt endl Aufruf der rekursiven Funktion cout lt lt Grosster gemeinsamer Teiler iterativ lt lt gcdIterative a b lt lt endl Aufruf der iterativen Funktion Korrektheit des Algorithmus Bearbeiten In jedem Schritt des Algorithmus wird eine Division mit Rest ausgefuhrt r i 1 q i 1 r i r i 1 0 r i 1 lt r i displaystyle r i 1 q i 1 cdot r i r i 1 qquad 0 leq r i 1 lt r i nbsp Die Division mit Rest hat die Eigenschaft ggT r i 1 r i ggT r i r i 1 displaystyle operatorname ggT r i 1 r i operatorname ggT r i r i 1 nbsp Im letzten Schritt des Algorithmus r n 1 q n 1 r n 0 displaystyle r n 1 q n 1 cdot r n 0 nbsp ist r n 1 0 displaystyle r n 1 0 nbsp und deshalb gilt ggT r n 1 r n ggT r n 0 r n displaystyle operatorname ggT r n 1 r n operatorname ggT r n 0 r n nbsp Da im ersten Schritt r i 1 a displaystyle r i 1 a nbsp und r i b displaystyle r i b nbsp ist ist ggT a b r n displaystyle operatorname ggT a b r n nbsp Historische Entwicklung Bearbeiten nbsp Darstellung Euklids von Justus von Gent 15 Jahrhundert Der euklidische Algorithmus ist der alteste bekannte nicht triviale Algorithmus Das Verfahren wurde von Euklid um 300 v Chr in seinem Werk Die Elemente beschrieben In Buch VII Propositionen 1 und 2 formulierte er den Algorithmus fur positive ganze Zahlen und in Buch X Proposition 2 und 3 fur positive reelle Zahlen Die letztere Version ist ein geometrischer Algorithmus und Euklid nannte ihn Wechselwegnahme griech ἀn8yfairesis anthyphairesis Er suchte ein grosstes gemeinsames Mass zweier Strecken eine dritte Strecke sodass die Lange der beiden ursprunglichen Strecken Vielfache der Lange der dritten Strecke sind Das Verfahren wurde wahrscheinlich nicht von Euklid erfunden da er in den Elementen die Erkenntnisse fruherer Mathematiker zusammenfasste Der Mathematiker und Historiker Bartel Leendert van der Waerden vermutet dass Buch VII ein schon von den Pythagoreern verwendetes Lehrbuch der Zahlentheorie ist 1 Hippasos von Metapont fuhrte etwa 500 v Chr vermutlich seinen Beweis der Inkommensurabilitat von gewissen Strecken und Diagonalen auf Grundlage des euklidischen Algorithmus durch und auch Eudoxos von Knidos um 375 v Chr kannte wohl das Verfahren Aristoteles um 330 v Chr wies auf dieses Verfahren in seinem Werk Topik 158b 29 35 hin 2 Jahrhunderte spater wurde der euklidische Algorithmus voneinander unabhangig in Indien und China entdeckt um damit hauptsachlich diophantische Gleichungen aus der Astronomie zu losen und genaue Kalender zu erstellen 3 Im funften Jahrhundert beschrieb der indische Mathematiker und Astronom Aryabhata den Algorithmus als Pulverisator 4 wahrscheinlich aufgrund seiner Effektivitat beim Losen diophantischer Gleichungen 5 Zwar hat schon der chinesische Mathematiker und Astronom Sun Zi einen Spezialfall des chinesischen Restsatzes beschrieben 6 die allgemeine Losung wurde jedoch von Qin Jiushao 1247 in seinem Buch Shushu Jiuzhang chinesisch 數書九章 数书九章 Mathematische Abhandlung in neun Kapiteln veroffentlicht 4 7 Im neuzeitlichen Europa wurde der euklidische Algorithmus erstmals wieder in der zweiten Auflage von Bachets Problemes plaisants et delectables qui se font par les nombres beschrieben 4 Der Algorithmus wurde in Europa zum Losen diophantischer Gleichungen und zur Berechnung der Kettenbruchentwicklung verwendet Nicholas Saunderson veroffentlichte den erweiterten euklidischen Algorithmus und schrieb ihn Roger Cotes zu als Methode zur effizienten Berechnung von Kettenbruchen 4 Im 19 Jahrhundert gab der euklidische Algorithmus den Anstoss zur Entwicklung neuer Zahlensysteme wie den gaussschen Zahlen und den Eisenstein Zahlen 1815 verwendete Carl Friedrich Gauss den euklidischen Algorithmus um die eindeutige Faktorisierung der gaussschen Zahlen zu zeigen Seine Arbeit wurde jedoch erst im Jahr 1832 veroffentlicht 8 Gauss erwahnte den Algorithmus zudem in seinem 1801 veroffentlichten Werk Disquisitiones Arithmeticae allerdings nur als Methode zur Berechnung von Kettenbruchen 9 Peter Gustav Lejeune Dirichlet scheint der Erste zu sein der den euklidischen Algorithmus als Grundlage eines grossen Teils der Zahlentheorie beschrieben hat 9 Er bemerkte dass viele Ergebnisse der Zahlentheorie wie beispielsweise die eindeutige Faktorisierung auch fur andere Zahlensysteme gelten in denen der euklidische Algorithmus angewendet werden kann 10 Dirichlets Vorlesungen uber Zahlentheorie wurden von Richard Dedekind herausgegeben und erweitert der den euklidischen Algorithmus fur das Studium algebraischer Zahlen nutzte einer neuen allgemeineren Zahlenart Dedekind war beispielsweise der Erste der Pierre de Fermats Zwei Quadrate Satz mit der eindeutigen Faktorisierung der gaussschen Zahlen bewies 11 Dedekind fuhrte das Konzept des euklidischen Rings ein ein Zahlensystem in dem eine verallgemeinerte Variante des euklidischen Algorithmus angewendet werden kann In den letzten Jahrzehnten des 19 Jahrhunderts trat der euklidische Algorithmus allmahlich hinter Dedekinds allgemeinere Theorie der Ideale zuruck 3 Jacques Charles Francois Sturm entwickelte 1829 die sturmschen Ketten zur Berechnung der Anzahl der Nullstellen eines Polynoms in einem vorgegebenen Intervall Dabei wird eine Variante des euklidischen Algorithmus verwendet um die einzelnen Glieder einer Kette zu bestimmen In der Vergangenheit gab es zahllose Versuche den euklidischen Algorithmus auf mehr als zwei naturliche Zahlen zu verallgemeinern beispielsweise um ausser ihrem grossten gemeinsamen Teiler auch optimale etwa kleinstmogliche Multiplikatoren zu finden die in der Linearkombination mit den Zahlen diesen Teiler liefern Der moderne Stand der Forschung hierzu wurde von Havas Majewski und Matthews dargestellt 12 Der euklidische Algorithmus war der erste Algorithmus zur Berechnung von Ganzzahlbeziehungen kommensurabler reeller Zahlen In den vergangenen Jahren wurden weitere Algorithmen fur diese Aufgabenstellung entwickelt beispielsweise der Ferguson Forcade Algorithmus 13 aus dem Jahr 1979 und verwandte Algorithmen der LLL Algorithmus der HJLS Algorithmus nach den Autoren Hastad Just Lagarias und Schnorr und der PSLQ Algorithmus nach partial sum of squares plus LQ matrix decomposition Im Jahr 2001 wurde gezeigt dass die von einigen Autoren berichtete Instabilitat des HJLS Algorithmus lediglich auf einer unzweckmassigen Implementierung beruhte und dass dieser Algorithmus aquivalent zum PSLQ Algorithmus ist 14 Enger an den eigentlichen euklidischen Algorithmus angelehnt sind seine mehrdimensionalen Verallgemeinerungen von George Szekeres 1970 15 Helaman Ferguson und Rodney Forcade 1981 16 Just 1992 17 von Rossner und Schnorr 1996 18 sowie der sehr allgemeine Ansatz von Lagarias 1994 19 1969 entwickelten Cole und Davie das Zwei Spieler Spiel Euklid das auf dem euklidischen Algorithmus basiert 20 Bei diesem Spiel gibt es eine optimale Strategie 21 Die beiden Spieler beginnen mit zwei Stapeln von a displaystyle a nbsp und b displaystyle b nbsp Steinen In jeder Runde nimmt ein Spieler m displaystyle m nbsp mal so viele Steine vom grosseren Stapel wie der kleinere Stapel gross ist Auf diese Weise kann der nachste Spieler den grosseren Stapel mit x displaystyle x nbsp Steinen auf x m y displaystyle x my nbsp Steine verkleinern wobei y displaystyle y nbsp die Grosse des kleineren Stapels ist Es gewinnt der Spieler der einen Stapel komplett abtragt 22 Laufzeitanalyse Bearbeiten nbsp Anzahl der Schritte zur Berechnung von ggT x y Rote Punkte bedeuten wenige Schritte gelbe grune und blaue Punkte relativ mehr Schritte Die dunkelblaue Linie hat die Steigung F wobei F der Goldene Schnitt ist Mit dem euklidischen Algorithmus kann man den ggT mit verhaltnismassig geringem Aufwand im Vergleich zur Berechnung der Primfaktorzerlegung der Zahlen a und b berechnen Bei der Laufzeitanalyse stellt sich heraus dass der schlimmste Eingabefall zwei aufeinander folgende Fibonacci Zahlen sind Bei aufeinander folgenden Fibonacci Zahlen ergibt sich als Rest immer die nachstkleinere Fibonacci Zahl Die Anzahl der benotigten Divisionen betragt im schlimmsten Fall 8 log ab wobei log ab proportional zur Anzahl der Ziffern in der Eingabe ist siehe Landau Symbole Da die fur die Division zweier Zahlen benotigte Zeit ihrerseits von der Anzahl der Ziffern der Zahlen abhangt ergibt sich eine tatsachliche Laufzeit von O log ab 3 bei naiver Ausfuhrung der Division Durch die vollstandige Uberfuhrung der eigentlichen Berechnung in den Frequenzbereich mittels einer speziellen schnellen Fourier Transformation wie sie im Schonhage Strassen Algorithmus Verwendung findet schneller Reziprokwertberechnung mit dem Newton Verfahren im Frequenzbereich fur die Division und anschliessender Rucktransformation mittels inverser schneller Fourier Transformation kommt man so zu einer theoretischen Untergrenze von W n log n wobei n die maximale Anzahl an Ziffern von a und b ist Die von Schonhage entwickelte Variante des euklidischen Algorithmus konnte durch Parallelisierung auf einem Multi Prozessor System weiter beschleunigt werden 23 Fur die Anzahl der Schritte gibt es asymptotische Abschatzungen wobei die Porter Konstante eine Rolle spielt Euklidischer Algorithmus und Kettenbruchzerlegung BearbeitenDie Quotienten die im euklidischen Algorithmus auftreten sind genau die Teilnenner die in der Kettenbruchzerlegung von a b displaystyle frac a b nbsp vorkommen Hier fur das obige Beispiel mit hervorgehobenen Ziffern t 1071 1 1029 421029 24 42 2142 2 21 0Hieraus lasst sich der Kettenbruch entwickeln 1071 1029 1 42 1029 1 1 1029 42 1 1 24 21 42 1 1 24 1 2 1 24 2 displaystyle frac 1071 1029 mathbf 1 frac 42 1029 mathbf 1 frac 1 frac 1029 42 mathbf 1 frac 1 mathbf 24 frac 21 42 mathbf 1 frac 1 mathbf 24 frac 1 mathbf 2 1 24 2 nbsp Dieses Verfahren lasst sich auch fur jede beliebige reelle Zahl r displaystyle r nbsp anwenden Ist r displaystyle r nbsp nicht rational so endet der Algorithmus einfach nie Die so gewonnene Folge an Quotienten stellt dann die unendliche Kettenbruchzerlegung von r displaystyle r nbsp dar Andere Zahlensysteme BearbeitenWie oben beschrieben wird der euklidische Algorithmus zur Berechnung des grossten gemeinsamen Teilers zweier naturlicher Zahlen verwendet Der Algorithmus lasst sich jedoch auch auf reelle Zahlen und exotischere Zahlensysteme wie Polynome quadratische Zahlen und die nicht kommutativen Hurwitzquaternionen verallgemeinern Im letzten Fall wird der euklidische Algorithmus dazu verwendet die wichtige Eigenschaft einer eindeutigen Faktorisierung zu zeigen Das heisst dass eine solche Zahl eindeutig in irreduzible Elemente der Verallgemeinerung von Primzahlen zerlegt werden kann Die eindeutige Faktorisierung ist grundlegend fur viele Beweise der Zahlentheorie Rationale und reelle Zahlen Bearbeiten Wie schon von Euklid im Buch 10 seines Werks Die Elemente beschrieben kann der euklidische Algorithmus auch auf reelle Zahlen angewandt werden Das Ziel des Algorithmus ist es dann eine reelle Zahl g displaystyle g nbsp zu finden sodass die beiden Zahlen a displaystyle a nbsp und b displaystyle b nbsp ganzzahlige Vielfache dieser Zahl sind Diese Aufgabenstellung ist gleichbedeutend mit der Suche nach einer Ganzzahlbeziehung zwischen den beiden reellen Zahlen a displaystyle a nbsp und b displaystyle b nbsp also der Berechnung zweier ganzer Zahlen s displaystyle s nbsp und t displaystyle t nbsp fur die s a t b 0 displaystyle sa tb 0 nbsp gilt Euklid verwendete diesen Algorithmus bei der Betrachtung der Inkommensurabilitat von Strecken Der euklidische Algorithmus fur reelle Zahlen unterscheidet sich in zwei Punkten von seinem Gegenstuck fur ganze Zahlen Zum einen ist der Rest r k displaystyle r k nbsp eine reelle Zahl obwohl die Quotienten q k displaystyle q k nbsp weiterhin ganze Zahlen sind Zum anderen endet der Algorithmus nicht immer nach einer endlichen Anzahl von Schritten Wenn er dies jedoch tut dann ist der Bruch a b displaystyle tfrac a b nbsp eine rationale Zahl es gibt also zwei ganze Zahlen m displaystyle m nbsp und n displaystyle n nbsp mit a b m g n g m n displaystyle frac a b frac mg ng frac m n nbsp und kann als Kettenbruch q 0 q 1 q 2 q N displaystyle q 0 q 1 q 2 ldots q N nbsp geschrieben werden Wenn der Algorithmus nicht endet dann ist der Bruch a b displaystyle tfrac a b nbsp eine irrationale Zahl und mit dem unendlichen Kettenbruch q 0 q 1 q 2 displaystyle q 0 q 1 q 2 ldots nbsp identisch Beispiele fur unendliche Kettenbruche sind die Goldene Zahl F 1 1 1 displaystyle Phi 1 1 1 ldots nbsp und die Wurzel aus 2 2 1 2 2 displaystyle sqrt 2 1 2 2 ldots nbsp Im Allgemeinen ist es unwahrscheinlich dass der Algorithmus anhalt da fast alle Verhaltnisse a b displaystyle tfrac a b nbsp zweier reeller Zahlen irrationale Zahlen sind Polynome Bearbeiten Polynome in einer Variablen uber einem Korper bilden einen euklidischen Ring Die Polynomdivision ist fur diese Polynome also eine Division mit Rest und der euklidische Algorithmus kann genauso wie bei den ganzen Zahlen durchgefuhrt werden Die Berechnung des grossten gemeinsamen Teilers der Polynome f x 4 x 3 x 1 displaystyle f x 4 x 3 x 1 nbsp und g x 2 1 displaystyle g x 2 1 nbsp in R x displaystyle mathbb R x nbsp gestaltet sich beispielsweise folgendermassen x 4 x 3 x 1 x 2 x 1 x 2 1 2 x 2 displaystyle x 4 x 3 x 1 left x 2 x 1 right cdot left x 2 1 right left 2x 2 right nbsp x 2 1 1 2 x 1 2 2 x 2 0 displaystyle x 2 1 left frac 1 2 x frac 1 2 right cdot 2x 2 0 nbsp Damit ist 2 x 2 displaystyle 2x 2 nbsp oder das dazu assoziierte Polynom x 1 displaystyle x 1 nbsp ein grosster gemeinsamer Teiler von f displaystyle f nbsp und g displaystyle g nbsp Polynome mit Koeffizienten aus einem faktoriellen Ring Bearbeiten Wir halten einen faktoriellen Ring d h einen Ring mit bis auf Einheiten eindeutiger Primfaktorzerlegung R displaystyle R nbsp fest und betrachten Polynome aus dem Polynomring R x displaystyle R x nbsp also Polynome in einer Variablen x displaystyle x nbsp mit Koeffizienten aus R displaystyle R nbsp Im Spezialfall R k y displaystyle R k y nbsp wobei k displaystyle k nbsp ein Korper sei erhalten wir so den Ring k x y displaystyle k x y nbsp der Polynome in zwei Variablen uber k displaystyle k nbsp In R x displaystyle R x nbsp ist Division mit Rest nicht mehr allgemein durchfuhrbar Seien z B f x 2 1 displaystyle f x 2 1 nbsp und g 2 x 1 displaystyle g 2x 1 nbsp in Z x displaystyle mathbb Z x nbsp Polynomdivision in Q x displaystyle mathbb Q x nbsp liefert den Quotienten 1 2 x 1 4 displaystyle tfrac 1 2 x tfrac 1 4 nbsp der nicht in Z x displaystyle mathbb Z x nbsp liegt Wir konnen allerdings eine Pseudodivision wie folgt definieren Seien f displaystyle f nbsp und g displaystyle g nbsp Polynome aus R x displaystyle R x nbsp mit Grad d f displaystyle d f nbsp bzw d g displaystyle d g nbsp sei g 0 displaystyle g 0 nbsp der Leitkoeffizient des Polynoms g displaystyle g nbsp und d d f d g displaystyle delta d f d g nbsp Dann gibt es Polynome q r R x displaystyle q r in R x nbsp so dass g 0 d 1 f q g r displaystyle g 0 delta 1 f qg r nbsp wobei wieder r displaystyle r nbsp von geringerem Grad ist als g displaystyle g nbsp Durch wiederholte Durchfuhrung der Pseudodivision lasst sich der ggT von f displaystyle f nbsp und g displaystyle g nbsp bestimmen allerdings ist das Verfahren in der Praxis ineffizient da die Faktoren g 0 d 1 displaystyle g 0 delta 1 nbsp die Koeffizienten der Zwischenergebnisse exponentiell anwachsen lassen Um das zu vermeiden kann nach jedem Schritt der Inhalt des Rests r displaystyle r nbsp entfernt werden was allerdings wiederum ggT Berechnungen in R displaystyle R nbsp erfordert Effizienter lasst sich der ggT mit dem Subresultantenverfahren berechnen Varianten BearbeitenVon Josef Stein stammt der nach ihm benannte steinsche Algorithmus der ohne die aufwandigen Divisionen auskommt Er verwendet nur noch Divisionen durch Zwei die von einem Rechner sehr schnell durchzufuhren sind Aus diesem Grund wird dieser Algorithmus auch binarer euklidischer Algorithmus genannt Der Performancevorteil auf realen Rechnern zeigt sich aber nur wenn der Integertyp die Registerbreite des Prozessors nicht uberschreitet Merkt man sich beim euklidischen Algorithmus die Quotienten q i displaystyle q i nbsp der Zwischenschritte dann lasst sich damit eine Darstellung ggT a b s a t b displaystyle operatorname ggT a b sa tb nbsp mit ganzen Zahlen s displaystyle s nbsp und t displaystyle t nbsp finden Dies nennt man den erweiterten euklidischen Algorithmus Damit lassen sich die Inversen in Restklassenringen berechnen Eine andere Erweiterung ist der Algorithmus der hinter dem Quadratischen Reziprozitatsgesetz steckt Mit diesem lasst sich das Jacobi Symbol effizient berechnen Siehe auch BearbeitenErweiterter euklidischer Algorithmus Steinscher AlgorithmusWeblinks Bearbeiten nbsp Wikibooks Algorithmensammlung zum euklidischen Algorithmus Lern und Lehrmaterialien Christian Spannagel Der Euklidische Algorithmus Vorlesungsreihe 2012 Peter Zierenberg Euklidischer Algorithmus C Hochschule Flensburg Erweiterter euklidischer Algorithmus www tutorialspoint com Program to Find GCD of Two Numbers Using Recursive Euclid Algorithm GeeksforGeeks Euclidean algorithms Basic and Extended Einzelnachweise Bearbeiten Bartel Leendert van der Waerden Erwachende Wissenschaft Agyptische babylonische und griechische Mathematik Birkhauser Verlag Basel 1956 S 188 Donald E Knuth The Art of Computer Programming 3 Auflage Band 2 Seminumerical Algorithms Addison Wesley Professional 1997 ISBN 0 201 89684 2 S 334 337 a b John Stillwell Elements of Number Theory Springer Verlag 2003 ISBN 0 387 95587 9 S 41 42 a b c d James Joseph Tattersall Elementary number theory in nine chapters Cambridge University Press 2005 ISBN 978 0 521 85014 8 S 70 72 Kenneth H Rosen Bart Goddard Elementary Number Theory and Its Applications 2000 ISBN 0 201 87073 8 S 86 87 Oystein Ore Number Theory and Its History McGraw Hill New York 1948 S 247 248 James Joseph Tattersall Elementary number theory in nine chapters Cambridge University Press 2005 ISBN 978 0 521 85014 8 S 72 184 185 Carl Friedrich Gauss Theoria residuorum biquadraticorum a b John Stillwell Elements of Number Theory Springer Verlag 2003 ISBN 0 387 95587 9 S 31 32 Peter Gustav Lejeune Dirichlet amp Richard Dedekind Vorlesungen uber Zahlentheorie 2 Auflage Friedrich Vieweg und Sohn Braunschweig 1871 S 30 31 gdz sub uni goettingen de Peter Gustav Lejeune Dirichlet Richard Dedekind Vorlesungen uber Zahlentheorie 4 Auflage Friedrich Vieweg und Sohn Braunschweig 1894 Supplement XI siehe etwa George Havas Bohdan S Majewski Keith R Matthews Extended GCD algorithms Memento vom 5 Marz 2014 im Internet Archive PDF 160 kB Technical Report TR0302 The University of Queensland Brisbane 1994 oder G Havas B S Majewski K R Matthews Extended GCD and Hermite normal form algorithms via lattice basis reduction Memento vom 5 Marz 2014 im Internet Archive PDF 266 kB Experimental Mathematics 7 1998 No 2 S 125 136 und die reichhaltige Bibliografie darin Eric W Weisstein Integer Relation In MathWorld englisch Alan Meichsner Integer relation algorithms and the recognition of numerical constants Master s thesis Simon Fraser University Juni 2001 George Szekeres Multidimensional continued fractions Ann Univ Sci Budapest Sectio Math 13 1970 S 113 140 Helaman R P Ferguson Rodney W Forcade Multidimensional Euclidean algorithms J Reine Angew Math 334 1982 S 171 181 Bettina Just Generalizing the continued fraction algorithm to arbitrary dimensions SIAM J Comput 21 1992 S 909 926 Carsten Rossner Claus Peter Schnorr An optimal stable continued fraction algorithm for arbitrary dimension Electronic Colloquium on Computational Complexity ECCC TR96 020Carsten Rossner Claus Peter Schnorr An optimal stable continued fraction algorithm In Lecture Notes Computer Science 1084 Springer 1996 S 31 43 Jeffrey Lagarias Geodesic multidimensional continued fractions Proc London Math Soc 69 1994 S 464 488 A J Cole A J T Davie A game based on the Euclidean algorithm and a winning strategy for it In Mathematica Gazette Band 53 1969 S 354 357 doi 10 2307 3612461 E L Spitznagel Properties of a game based on Euclid s algorithm In Mathematical Magazine Band 46 1973 S 87 92 Joe Roberts Elementary Number Theory A Problem Oriented Approach MIT Press Cambridge MA 1977 ISBN 0 262 68028 9 S 1 8 Giovanni Cesari Parallel implementation of Schonhage s integer GCD algorithm In ANTS III Lecture Notes Computer Science Band 1423 Springer Verlag 1998 S 64 76 Normdaten Sachbegriff GND 4659898 4 lobid OGND AKS Abgerufen von https de wikipedia org w index php title Euklidischer Algorithmus amp oldid 234226567