Der Euklidische Algorithmus Dieter Wolke Einleitung. Für den Begriff Algorithmus gibt es keine einheitliche Definition. Eine sehr knappe findet sich in der Encyclopaedia Britannica (1985) A systematic mathematical procedure that produces in a finite number of steps the answer to a question or the solution of a problem. Bei dem Wort Algorithmus handelt es sich um eine Verballhornung des Namens Muhammad al Khowarizmi. Sein Träger lebte im zehnten Jahrhundert in Persien und machte sich insbesondere um die Übertragung indischer Rechenbücher (Rechnen im Zehnersystem, Gebrauch der Null) ins Persische verdient. Vom Persischen gelangten diese Werke über das Arabische ins Abendland. Wann kann man einen Algorithmus als gut bezeichnen? 1. Er soll zuverlässig sein, deterministisch. Es gibt auch probabilistische, die zwar mit erdrückender Wahrscheinlichkeit, aber nicht mit letzter Sicherheit die richtige Antwort liefern. 2. Er soll leicht programmierbar sein und aus möglichst einfachen Einzelschritten bestehen. 3. Die Laufzeit soll kurz und der Speicherbedarf gering sein. 4. Eine Forderung, die weniger aus praktischen Gründen als aus mathematisch ästhetischen Gründen gestellt werden kann: Im Algorithmus soll eine pfiffige Idee stecken. Zu den meisten algorithmisch angreifbaren Problemen gibt es eine Fülle verschiedener Verfahren, zum Beispiel bei 1) der Berechnung der n ten Dezimalstelle der Zahl pi, 2) der Multiplikation zweier ganzer Zahlen und zahlloser anderer für Theorie und Praxis interessanter Fragestellungen. Vor allem im Zusammenhang mit kryptografischen Verfahren (Ver und Entschlüsselung von Nachrichten) ergibt sich die Notwendigkeit, Paare riesiger (500 Dezimalstellen und mehr) natürlicher Zahlen mit größtem gemeinsamen Teiler Eins zu finden. Hierzu eignet sich hervorragend der vor etwa 2300 Jahren von Euklid in den Elementen beschriebene Euklidische Algorithmus. Bis auf geringe Abänderungen wird dieses uralte Verfahren noch heute benutzt, und erfüllt, wie hier gezeigt werden soll, alle oben genannten Anforderungen. 1
2. Im Folgenden soll kurz an die zugrundeliegenden und sicher überwiegend bekannten Begriffe erinnert werden. 2.1. Für a Z und d N heißt d Teiler von a, wenn es ein c Z gibt mit a = cd. Gleichbedeutend: Die Division a durch d geht auf. Kurz: d a, andernfalls d a. Hinweis: Als Teiler sollen hier nur natürliche Zahlen d zugelassen sein, während die Vielfachen beliebig aus Z stammen können. Beispiele: 3 9, 3 ( 5), 7 0. Folgerung: Aus a 0 und d a folgt d a. Denn wegen a = cd ist c 0, also c 1. Und somit d c d = cd = a. 2.2. Für a Z wird die Menge der Teiler d von a mit T (a) bezeichnet. Beispiele: T (1) = {1}, T (p) = {1, p} für jede Primzahl p, T (0) = N, T (a) = T ( a) = T ( a ), T (28) = {1, 2, 4, 7, 14, 28}, T (100) = {1, 2, 4, 5, 10, 20, 25, 50, 100}. 2.3. d heißt gemeinsamer Teiler von a und b, wenn d sowohl a als auch b teilt. Die Menge aller gemeinsamen Teiler von a und b ist der Schnitt der Mengen T (a) und T (b). 2.4. Falls mindestens eine der Zahlen a und b ungleich Null ist, besteht T (a) T (b) aus endlich vielen Elementen und hat somit ein größtes. Dies wird als größter gemeinsamer Teiler von a und b bezeichnet. Kurz: ggt (a, b) oder (a, b). Einige einfache Folgerungen. 1) Für a 0 ist (a, 0) = a, 2) (a, b) = ( a, b) = (b, a). Sind T (a) und T (b) bekannt, dann ist (a, b) leicht zu bestimmen, z.b. (100,28) = 4. Dieses Verfahren ist für die Praxis jedoch völlig ungeeignet. Bei 150 stelligen Dezimalzahlen etwa ist das Aufstellen der Mengen T (a) unzumutbar aufwändig. 2.5. Zwei Zahlen a und b die nicht beide = 0 sind heißen teilerfremd, wenn (a, b) = 1 ist. 2.6. Die Division mit Rest. Zu zwei Zahlen a Z und n N gibt es eindeutig q Z und r N 0 mit a = qn + r und 0 rn. r heißt der Rest bei der Division von a durch n. 2
Hinweis: Als q nimmt man die größte ganze Zahl a/n, die sogenannte Gauss Klammer [a/n]. Der Eindeutigkeitsbeweis wird indirekt geführt. 3. Der Euklidische Algorithmus. Nach 2.4. reicht es aus, den ggt für zwei natürliche Zahlen n 1, n 2 mit n 1 berechnen. Dazu führe man folgende Divisionen mit Rest durch n 2 zu (1) n 1 = q 1 n 2 + n 3, 0 < n 3 < n 2 (2) n 2 = q 2 n 3 + n 4, 0 < n 4 < n 3. (k 2) n k 2 = q k 2 n k 1 + n k, 0 < n k < n k 1 (k 1) n k 1 = q k 1 n k. Falls schon die erste Division aufgeht, ist offenbar (n 1, n 2 ) = n 2. Da die Reste n 3, n 4,... eine streng abnehmende Folge natürlicher Zahlen bilden, muss das Verfahren nach spätestens n 2 1 Divisionen abbrechen. n k ist der letzte nichtverschwindende Rest. Die Euklidische Aussage ist: ggt(n 1, n 2 ) = n k. Zum Beweis wird das Schema einmal von oben nach unten und dann von unten nach oben studiert. 1. Sei g = ggt (n 1, n 2 ). Dann ist insbesondere n 1 = c 1 g, n 2 = c 2 g und nach Division (1) n 3 = n 1 q 1 n 2 = (c 1 q 1 c 2 )g, also g n 2 und g n 3. Es folgt mit (2) in gleicher Weise g n 4, usw.... g n k 1, g n k, also ( ) g n k. 2. (k 1) besagt n k n k 1. n k 1 = q k 1 n k. Dies in (k 2) eingesetzt, ergibt n k 2 = (q k 2 q k 1 +1)n k, also n k n k 2. Dies erneut angewandt, gibt n k n k 3, usw... n k n 2, n k n 1. n k ist somit gemeinsamer Teiler von n 1 und n 2, also ( ) n k g. ( ) und ( ) zusammen führen zur Behauptung n k = (n 1, n 2 ). Beim Beispiel n 1 = 100, n 2 = 28 lautet das Schema (1) (2) (3) (4) 100 = 3 28 + 16 28 = 1 16 + 12 16 = 1 12 + 4 12 = 3 4. Vier Divisionen reichen also aus, um (100,28) = 4 zu zeigen. Schon bei so kleinen Zahlen ist dies wesentlich einfacher als die Bestimmung aller Teiler. 3
4. Diskussion des Algorithmus. Das Verfahren ist nach obigem Beweis offenbar zuverlässig. Die Einzelschritte sind denkbar einfach. Speicherplatz ist praktisch nicht erforderlich, da bei jeder Division nur die zwei vorigen Reste nötig sind. Zur Laufzeit. Falls die Restefolge nur sehr langsam abnimmt, zum Beipiel in jedem Schritt nur um einen begrenzten Betrag, ist das Verfahren für große Zahlen sicher wertlos. Dies kann zum Glück nicht eintreten, denn es gelten die Ungleichungen ( ) n 3 < n 1 2, n 4 < n 2 2,... das heißt mehr als Halbierung der Reste nach zwei Schritten. Grob werden zum Abbau einer Zehnerpotenz höchstens sieben Schritte benötigt. Bei zwei 1000-stelligen Zahlen etwa höchstens 7000 Divisionen. Das ist großartig wenig. Die folgenden Beispiele demonstrieren dies. n 1 = 3 20 1 = 3 486 784 400 n 2 = 2 20 1 = 1 048 575 n 3 = 272 525 n 4 = 231 000 n 5 = 41 525 n 6 = 23 375 n 7 = 18 150 n 8 = 5 225 n 9 = 2 475 n 10 = 275 = (n 1, n 2 ) 4
n 1 = 3 50 1 = 717 897 987 691 852 588 770 248 n 2 = 2 50 1 = 1 125 899 906 842 623 n 3 240 999 047 575 748 n 4 161 903 716 539 631 n 5 79 095 331 036 117 n 6 3 713 054 467 397 n 7 1 121 187 220 780 n 8 349 492 805 609 n 9 72 708 805 609 n 10 58 657 582 621 n 11 14 051 222 988 n 12 2 452 690 669 n 13 1 787 769 643 n 14 664 921 026 n 15 457 927 591 n 16 206 993 435 n 17 43 940 721 n 18 31 230 551 n 19 12 710 170 n 20 5 810 211 n 21 1 089 748 n 22 367 471 n 23 5 335 n 24 4 026 n 25 1 309 n 26 99 n 27 22 n 28 = 11 = (n 1, n 2 ) Zum Beweis der ersten Ungleichung in ( )(die anderen ergeben sich in gleicher Weise). Im ersten Fall sei n 2 n 1 /2. Dann gilt n 3 < n 2 n 1 /2, wie behauptet. Ist im zweiten Fall n 1 /2 < n 2 < n 1, dann kann (1) nur die Gestalt n 1 = 1 n 2 + n 3 mit n 3 < n 1 /2 haben. Dass dem Euklidischen Algorithmus etwas Besonderes, keineswegs Selbstverständliches innewohnt, wird wohl jeder bestätigen. 5. Zur Häufigkeit der Paare teilerfremder Zahlen. Um Paare großer, teilerfremder Zahlen zu erhalten, wird man zufällig zwei Zahlen n 1 und n 2 wählen, und hoffen, dass sie mit einiger Wahrscheinlichkeit den ggt Eins liefern. Es werde für großes N w(n) definiert als der Quotient der Anzahl der Paare n 1, n 2 N mit (n 1, n 2 ) = 1 und der Anzahl aller Paare n 1, n 2 N, d.h. N 2. w(n) also die Wahrscheinlichkeit, bei zufälliger Wahl zweier Zahlen n 1, n 2 N ein Paar mit 5
ggt Eins zu erwischen. Man könnte erwarten, dass w(n) mit wachsendem N sehr klein wird, denn es stehen sehr viele Werte für den ggt zur Verfügung. Das überraschende, nicht ganz leicht zu beweisende Ergebnis ist w(n) 6 π 2 für N. Etwa zwei Drittel aller Paare sind teilerfremd. Es bestehen somit gute Aussichten, bei gegebenem, z.b. 1000 stelligem n 1 rasch viele ähnlich große n 2 mit (n 1, n 2 ) = 1 zu finden. 6