Der Euklidische Algorithmus Dieter Wolke

Werbung
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 mathe”
matical 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“ be”
schriebene 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 6 | 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 6 | (−5), 7|0.
Folgerung: Aus a 6= 0 und d|a folgt d ≤ |a|. Denn wegen a = cd ist c 6= 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)
T (0)
T (28)
T (100)
= {1, p} für jede Primzahl p,
= N, T (a) = T (−a) = T (|a|),
= {1, 2, 4, 7, 14, 28},
= {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 6= 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 ∈ N0 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 n1 , n2 mit n1 ≥ n2 zu
berechnen. Dazu führe man folgende Divisionen mit Rest durch
(1)
n1
= q1 n 2
+ n3 ,
0 < n3 < n2
(2)
n2
= q2 n 3
+ n4 ,
..
.
+ nk ,
0 < n4 < n3
(k − 2) nk−2 = qk−2 nk−1
0 < nk < nk−1
(k − 1) nk−1 = qk−1 nk .
Falls schon die erste Division aufgeht, ist offenbar (n1 , n2 ) = n2 . Da die Reste n3 , n4 , . . .
eine streng abnehmende Folge natürlicher Zahlen bilden, muss das Verfahren nach
spätestens n2 − 1 Divisionen abbrechen. nk ist der letzte nichtverschwindende Rest.
Die Euklidische Aussage ist:
ggT(n1 , n2 ) = nk .
Zum Beweis wird das Schema einmal von oben nach unten und dann von unten nach
oben studiert.
1. Sei g = ggT (n1 , n2 ). Dann ist insbesondere n1 = c1 g, n2 = c2 g und nach Division (1)
n3 = n1 − q1 n2 = (c1 − q1 c2 )g, also g|n2 und g|n3 . Es folgt mit (2) in gleicher Weise
g|n4 , usw. . . . g|nk−1 , g|nk , also
(∗)
g ≤ nk .
2. (k − 1) besagt nk |nk−1 . nk−1 = qk−1 nk . Dies in (k − 2) eingesetzt, ergibt nk−2 =
(qk−2 qk−1 +1)nk , also nk |nk−2 . Dies erneut angewandt, gibt nk |nk−3 , usw . . . nk |n2 , nk |n1 .
nk ist somit gemeinsamer Teiler von n1 und n2 , also
(∗∗)
nk ≤ g.
(∗) und (∗∗) zusammen führen zur Behauptung nk = (n1 , n2 ).
Beim Beispiel n1 = 100, n2 = 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
(∗ ∗ ∗)
n3 <
n1
n2
, n4 < , . . .
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.
n1 = 320 − 1
n2 = 220 − 1
n3
n4
n5
n6
n7
n8
n9
n10 = 275
= 3 486 784 400
=
1 048 575
=
272 525
=
231 000
=
41 525
=
23 375
=
18 150
=
5 225
=
2 475
=
(n1 , n2 )
4
n1 = 350 − 1 = 717 897 987 691 852 588 770 248
n2 = 250 − 1 =
1 125 899 906 842 623
n3
240 999 047 575 748
n4
161 903 716 539 631
n5
79 095 331 036 117
n6
3 713 054 467 397
n7
1 121 187 220 780
n8
349 492 805 609
n9
72 708 805 609
n10
58 657 582 621
n11
14 051 222 988
n12
2 452 690 669
n13
1 787 769 643
n14
664 921 026
n15
457 927 591
n16
206 993 435
n17
43 940 721
n18
31 230 551
n19
12 710 170
n20
5 810 211
n21
1 089 748
n22
367 471
n23
5 335
n24
4 026
n25
1 309
n26
99
n27
22
n28
=
11 = (n1 , n2 )
Zum Beweis der ersten Ungleichung in (∗ ∗ ∗)(die anderen ergeben sich in gleicher
Weise).
Im ersten Fall sei n2 ≤ n1 /2. Dann gilt n3 < n2 ≤ n1 /2, wie behauptet.
Ist im zweiten Fall n1 /2 < n2 < n1 , dann kann (1) nur die Gestalt n1 = 1 · n2 + n3 mit
n3 < n1 /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
n1 und n2 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
n1 , n2 ≤ N mit (n1 , n2 ) = 1 und der Anzahl aller Paare n1 , n2 ≤ N , d.h. N 2 . w(N )
also die Wahrscheinlichkeit, bei zufälliger Wahl zweier Zahlen n1 , n2 ≤ 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
für N → ∞.
π2
Etwa zwei Drittel aller Paare sind teilerfremd. Es bestehen somit gute Aussichten, bei
gegebenem, z.B. 1000–stelligem n1 rasch viele ähnlich große n2 mit (n1 , n2 ) = 1 zu
finden.
6
Herunterladen