Euklidische Algorithmus, Restklassenringe (Z m,, ) Manfred Gruber http://www.cs.hm.edu/~gruber SS 2008, KW 14
Gröÿter gemeinsamer Teiler Denition 1. [Teiler] Eine Zahl m N ist Teiler von n Z, wenn der Quotient n m Z ist. Ist m Teiler von n, schreibt man m n, andernfalls m n. Denition 2. [ggt] Gröÿter gemeinsamer Teiler (ggt) zweier Zahlen m, n 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) bezeichnet. Bemerkung 1. Für n > 0 ist ggt(0, n) = n, denn n teilt 0 und n, andrerseits können Teiler von 0 und n nicht gröÿer als n sein. Bemerkung 2. ggt(0,0) ist nicht deniert, denn die Menge der Teiler von 0 ist unbeschränkt und hat kein Maximum. 1
Primzahlen Denition 3. [teilerfremd] Zwei Zahlen m, n Z heiÿen teilerfremd, wenn ggt(m, n) = 1 ist. Denition 4. [prim] Eine positive Zahl p Z heiÿt prim (Primzahl), wenn 1 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 N kann als Produkt von Primzahlen n = p 1 p m dargestellt werden und unter der Bedingung p 1... p m. ist diese Darstellung eindeutig. 2
oor, modulo Denition 5. [oor] Für x R bezeichnet 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] Für x, y Z ist x mod y = x y x/y. Im Fall y = 0 legt man fest: x/y = 0. Beispiel 1. 5 mod 3 = 5 3 5/3 = 2, 5 mod 3 = 5 ( 3) 5/( 3) = 1, 5 mod 3 = 5 3 5/3 = 1, 5 mod 3 = 5 ( 3) 5/( 3) = 2. 3
Klassischer euklidischer Algorithmus Den gröÿten gemeinsamen Teiler ggt(m, n) zweier Zahlen m, n Z mit 0 m < n kann man nach Euklid rekursiv berechnen durch ggt(0, n) = n (1) ggt(m, n) = ggt(n mod 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 n/m und m ist und umgekehrt. Beispiel 2. ggt(54,87) = ggt(33,54) = ggt(21,33) = ggt(12,21) = ggt(9,12) = ggt(3,9) = ggt(0,3) = 3. 4
Erweiterter euklidischer Algorithmus Der ggt(x 1, x 0 ) (0 x 1 < x 0 ) wird berechnet durch die Rekursion x i+1 = x i 1 x i x i 1 /x i, (3) die mit x n+1 = 0 und ggt(x [ 1, x 0 ) = ] x n 0 endet. 0 1 Mit q i = x i 1 /x i und Q i = gilt 1 q i [ xi x i+1 ] [ ] xi 1 = Q i x i und [ xn x n+1 ] = } Q n Q n 1 {{ Q } 1 ] =:[ a b [ x0 x 1 ]. [ xn ] [ ] [ ] a b x0 Aus x n+1 = x 1 folgt die Darstellung ggt(x 1, x 0 ) = x n = ax 0 + bx 1 (a, b Z). (4) 5
Beispiel 3. Mit den Zahlen von Beispiel 2 gilt [ x6 x 7 ] = = = [ 0 ] [ 1 0 ] 5 [ ] 1 87 1 3 1 1 54 [ 5 ] [ ] 8 87 18 29 54 [ ] 3 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
Ezienz des euklidischen Algorithmus Benachbarte Fibonacci-Zahlen sind teilerfremd. Dies sieht man, wenn man die rekursive Berechnung der Fibonacci-Zahl F n+1 aufrollt und die entstehenden Gleichungen als euklidische Divisionen interpretiert: F n+1 = 1 F n + F n 1 = F n+1 Fn F n + F n+1 mod F n F n = 1 F n 1 + F n 2 = F n F n 1 F n 1 + F n mod F n 1. F 2 = 1 F 1 + F 0 = F 2 F1 F 1 + F 2 mod F 1 Diese Gleichungen zeigen noch etwas: Die Fibonacci-Zahlen F n+1, F n sind die kleinsten Eingabedaten des euklidischen Algorithmus, die zu n Divisionen mit Rest führen. d.h. sind zur Berechnung des ggt zweier beliebiger Zahlen x 1 < x 0 mindestens n Schritte erforderlich, so ist x 0 F n+1. 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
modulo m Für m N, m 2 und Z m := {0,..., m 1} betrachten wir die Abbildung modulo m r m : Z Z m, a a mod m = a m a/m. Bemerkung 4. r m (a) = r m (a ) genau dann, wenn sich a von a durch ein ganzzahliges Vielfaches von m unterscheidet. Beweis : Aus a m a/m = a m a /m folgt a a = m ( a/m a /m ). : Aus a = a + km folgt a m a/m = (a + km) m (a +km)/m = a +km km m a /m = a m a /m. Bemerkung 5. eine Multiplikation: Auf Z m gibt es eine Addition und a b := (a + b) mod m a b := ab mod m. 8
(Z 6,, ) Beispiel 4. In Z 6 gilt folgende Additionstabelle: 0 1 2 3 4 5 0 0 1 2 3 4 5 1 1 2 3 4 5 0 2 2 3 4 5 0 1 3 3 4 5 0 1 2 4 4 5 0 1 2 3 5 5 0 1 2 3 4 (Z 6, ) ist eine kommutative Gruppe: Das neutrale Element (der Addition) ist 0. Jedes Element hat ein eindeutig bestimmtes (additives) Inverses bezüglich 0, z.b. ist 1 = 5, denn 1 + 5 = 0. Mit Hilfe der Additionstabelle ist die Bestimmung der inversen (negativen) Elemente leicht: Kreuzt sich eine Zeile mit einer Spalte in einer Null, so sind die zugehörigen Elemente zueinander invers. 9
In Z 6 gilt folgende Multiplikationstabelle: 0 1 2 3 4 5 0 0 0 0 0 0 0 1 0 1 2 3 4 5 2 0 2 4 0 2 4 3 0 3 0 3 0 3 4 0 4 2 0 4 2 5 0 5 4 3 2 1 (Z 6, ) ist eine kommutative Halbgruppe: Es gibt ein neutrales Element der Multiplikation, nämlich 1. Damit ist (Z 6, ) ein sog. Monoid (Halbgruppe mit neutralem Element). 1 und 5 sind invertierbar ( 1 1 = 1, 1 5 = 5), die anderen Elemente nicht. (Z 6,, ) ist ein kommutativer Ring mit Einselement, jedoch kein Integritätsbereich, d.h. es gibt sog. Nullteiler; z.b. ist 2 3 = 0. 10
Man kann und auf Z ausdehnen, indem man für beliebige a, b Z deniert: a b = (a mod m) (b mod m) (5) a b = (a mod m) (b mod m). (6) Bemerkung 6. das Rechnen modulo m leicht. Die Formeln (5) und (6) machen 1. Rechnen mit : Mit m = 6 rechnet man z.b. (2539 + 7677) mod 6 = ((2539 mod 6) + (7677 mod 6)) mod 6 = (1 + 3) mod 6 = 4. 2. Rechnen mit : Mit m = 6 rechnet man z.b. (2539 7677) mod 6 = ((2539 mod 6) (7677 mod 6)) mod 6 = (1 3) mod 6 = 3. 3. ggt(2539,7677) mod 6 = ggt(2539 mod 6,7677 mod 6) = ggt(1,3) = 1, denn es gilt allgemein ggt(x, y) = ax+ by mit geeigneten a, b Z und deshalb ggt(x, y) mod m = (a mod m) (x mod m) + (b mod m) (y mod m). 11
Modulare Inverse Denition 7. [modulare Inverse] Man nennt x Z m invertierbar, wenn es ein y Z m gibt, für das x y = 1 gilt. y heiÿt dann modulare Inverse von x. Die Menge der invertierbaren Elemente von Z m bezeichnet man mit Z m. Satz 2. x Z m genau dann, wenn x und m teilerfremd sind, d.h. wenn ggt(x, m) = 1 gilt. Beweis Wir zeigen: x invertierbar x und m teilerfremd. Wenn x Z m invertierbar ist, gibt es ein y Z m mit x y = 1 in Z m, d.h. xy m xy/m = 1 in Z. Aus der letzten Gleichung folgt aber, dass jeder gemeinsame Teiler (in Z) von x und m auch ein Teiler von 1 ist. Nun zeigen wir: x und m teilerfremd x invertierbar. Sind x und m teilerfremd, dann gibt es (erweiterter euklidischer Algorithmus) a, b Z mit ax + bm = 1. Damit gilt auch a x = (a mod m)(x mod m) = 1. 12
Bemerkung 7. In Beispiel 4 war Z 6 = {1,5}. Nun weiÿ man auch, wieso. Bemerkung 8. Wie berechnet man modulare Inverse in Z m? Mit dem erweiterten euklidischen Algorithmus! Für einen gröÿten gemeinsamen Teiler d (in Z) von x und m erhält man die Darstellung d = ax+bm. Ist d mod m 1, so ist x nicht invertierbar. Ist d mod m = 1, so ist x invertierbar und a mod m das modulare Inverse von x. Bemerkung 9. Ist p eine Primzahl, so ist jedes Element von x Z p \ {0} teilerfremd zu p, also ist in diesem Falle Z p \ {0} = Z p. 13
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 14