Der euklidische Algorithmus Manfred Gruber http://www.lrz-muenchen.de/~gruber SS 2009, KW 13 M. Gruber, SS 2009 Diskrete Mathematik Gröÿter gemeinsamer Teiler Denition 1. [Teiler] von n 2Z Eine Zahl m , wenn der Quotient von n, schreibt man m j 2Z n m 2N ist. Ist m Teiler n, andernfalls m Denition 2. [ggT] ist Teiler - n. Gröÿter gemeinsamer Teiler (ggT) zweier Zahlen m; n 2 Z ist diejenige gröÿte Zahl, die zugleich Teiler von m und n ist. Diese Zahl ist eindeutig bestimmt und wird mit ggT(m; n) be- zeichnet. Bemerkung 1. denn n teilt 0 Für n > 0 ist ggT(0; n) = n, und n, andrerseits können Teiler von 0 und n nicht gröÿer als n sein. Bemerkung 2. ggT(0; 0) die Menge der Teiler von 0 ist nicht deniert, denn ist unbeschränkt und hat kein Maximum. 1 M. Gruber, SS 2009 Primzahlen Denition 3. [teilerfremd] Z heiÿen teilerfremd, wenn Denition 4. [prim] (Primzahl), wenn 1 Diskrete Mathematik Zwei Zahlen m; n ggT(m; n) = 1 Eine Zahl p > 1 2 ist. heiÿt prim und p die einzigen Teiler von p sind. Bemerkung 3. Ist p prim, so ist p teilerfremd zu allen positiven Zahlen kleiner p. Satz 1. [Fundamentalsatz der Arithmetik] Jede Zahl n 2N kann als Produkt von Primzahlen n = 1 pm p dargestellt werden und unter der Bedingung 1 : : : pm: p ist diese Darstellung eindeutig. 2 M. Gruber, SS 2009 Diskrete Mathematik oor, modulo Denition 5. [oor] Für x 2R bezeichnet bc x (oor x, ganzzahliger Anteil von x) die gröÿte Zahl aus Z, die kleiner oder gleich x ist. Eine Zahl x mit Rest durch eine Zahl y dividieren heiÿt: Ermitteln, welches ganzzahlige Vielfache von y in x enthalten ist. Den verbleibenden Rest nennt man x mod y : Denition 6. [modulo] x Im Fall y =0 mod y = Für x; y x y legt man fest: b b x=y x=y 2Z c ist : c=0 . Beispiel 1. b5 3c = 2 ( 3) b5 ( 3)c = 1 5 3 b 5 3c = 1 ( 3) b 5 ( 3)c = 5 mod 3 = 5 5 mod 3=5 5 mod 3 = 5 mod 3= 5 3 = ; = ; = = ; 2: 3 M. Gruber, SS 2009 Diskrete Mathematik Klassischer euklidischer Algorithmus Den gröÿten gemeinsamen Teiler Zahlen m; n 2Z 0 mit ggT(m; n) zweier m < n kann man nach Euklid rekursiv berechnen durch ggT(0; n) = n ggT(m; n) = ggT(n mod (1) m; m); m > 0:(2) (1) und (2) beschreiben zusammen einen Rekursionsalgorithmus. (2) stellt gleichzeitig eine Behauptung dar. 1. Die Rekursion muss nach endlich vielen Schritten enden, nämlich dann, wenn sich für n mod m Null ergibt. 2. Die Behauptung, die in (2) steckt, ist wahr, da jeder gemeinsame Teiler von m und n auch gemeinsamer Teiler von n mod = m n m b c und n=m Beispiel 2. ggT(54; 87) ggT(21; 33) = m ist und umgekehrt. = ggT(12; 21) ggT(33; 54) = ggT(9; 12) = = ggT(3; 9) = ggT(0; 3) = 3. 4 M. Gruber, SS 2009 Diskrete Mathematik Erweiterter euklidischer Algorithmus Der ggT(x1 ; x0 ) (0 1 < x0) wird berechnet durch x die Rekursion +1 = xi 1 xi +1 die mit xn Mit qi 2 3 6 x i 6 6 6 4 7 7 7 7 5 +1 xi Aus = = 0 b xi 6x 6 i Qi 6 6 4 xi 2 3 2 6 x n 6 6 6 4 7 7 7 7 5 6a 6 6 6 4 +1 xn = b 3 7 5 6 x n 6 6 6 4 7 7 7 7 5 und +1 xn (3) 6= 0 xn 3 1 1 2 32 qi 7 7 7 7 5 endet. gilt 2 = Qn Qn | 1 {z =: a b 3 0777 1 75 x1 6x 6 Q 6 6 }4 3 07 7 folgt die Darstellung 5 x1 6 7 b7 7 6x 7 76 76 54 ggT(x1 ; x0 ) = 60 6 6 6 4 3 1777 1=xic ; xi ggT(x12; x0 ) = und 1=xic und Qi = 2 = xi xn = 0 + bx1 ax (a; b 2 Z) : (4) 5 : M. Gruber, SS 2009 Diskrete Mathematik Beispiel 3. Mit den Zahlen von Beispiel 2 gilt 3 2 6777 7 5 x7 6x 6 6 6 4 2 = 32 60 6 6 6 4 1 1 7 7 7 7 5 3 60 6 6 6 4 1 2 = 6 6 6 6 4 1 3 7 7 7 7 5 6877 6 7 6 7 6 7 4 5 1 32 5 52 3 54 3 877 668777 18 29 76 76 54 7 7 5 54 2 3 = 637 6 7 6 7 6 7 4 5 0 und damit ggT(54; 87) = 5 87 + ( 8) 54 = 3 : Aus dieser Beziehung kann man z.B. ablesen, dass ( 8) 54 mod 87 = 79 54 mod 87 = 3 ist. 6 M. Gruber, SS 2009 Diskrete Mathematik Ezienz des euklidischen Algorithmus Benachbarte Fibonacci-Zahlen sind teilerfremd. Dies sieht man, wenn man die rekursive Berechnung der Fibonacci-Zahl Fn +1 aufrollt und die entstehenden Gleichungen als euklidische Divisionen interpretiert: Fn F c Fn + Fn+1 mod Fn +1 = 1 Fn + Fn 1 = b nF+1 n =1 Fn Fn 1 + Fn 2 = b Fnn 1 c Fn 1 + Fn mod Fn 1 F .. . F Diese Fn F 2 = 1 F1 + F0 = b F12 c F1 + F2 mod F1 Gleichungen +1; Fn zeigen noch etwas: Die Fibonacci-Zahlen sind die kleinsten Eingabedaten des euklidischen Al- gorithmus, die zu n Divisionen mit Rest führen. d.h. sind zur 1 Berechnung des ggT zweier beliebiger Zahlen x 0 Fn+1. < x 0 mindes- tens n Schritte erforderlich, so ist x Es lässt sich daraus herleiten, dass die Anzahl benötigter Divisionen mit Rest beim euklidischen Algorithmus höchstens linear mit der Stellenzahl der Eingabedaten wächst. 7 M. Gruber, SS 2009 Diskrete Mathematik Literatur [CM] Ronald L. Graham, Donald E. Knuth and Oren Patashnik, Concrete Mathematics: A Foundation for Computer Science. Addison-Wesley, 1989; second edition, 1994. http://www-cs-faculty.stanford.edu/~knuth/gkp. html 8