Euklidische Algorithmus, Restklassenringe (Zm, ⊕, ⊗) Manfred Gruber http://www.cs.hm.edu/~gruber SS 2008, KW 14 M.Gruber, SS 2008 Diskrete Mathematik Gröÿter gemeinsamer Teiler Denition 1. [Teiler] von n∈ von n, Z , wenn der Quotient schreibt man m | n, Denition 2. [ggT] (ggT) zweier Zahlen m∈ Eine Zahl n m ∈ Z N ist. Ist ist Teiler m Teiler m - n. andernfalls Gröÿter gemeinsamer Teiler m, n ∈ Z m Zahl, die zugleich Teiler von ist diejenige gröÿte und n ist eindeutig bestimmt und wird mit ist. Diese Zahl ggT(m, n) be- zeichnet. Bemerkung 1. n teilt 0 und n, nicht gröÿer als Für n > 0 ist ggT(0, n) = n, denn andrerseits können Teiler von n Bemerkung 2. 0 und n sein. ggT(0,0) die Menge der Teiler von 0 ist nicht deniert, denn ist unbeschränkt und hat kein Maximum. 1 M.Gruber, SS 2008 Diskrete Mathematik Primzahlen Denition 3. [teilerfremd] Z heiÿen teilerfremd, wenn Denition 4. [prim] ggT(m, n) = 1 von p ist. Eine positive Zahl heiÿt prim (Primzahl), wenn m, n ∈ Zwei Zahlen p ∈ Z 1 und p die einzigen Teiler sind. Bemerkung 3. Ist p prim, so ist allen positiven Zahlen kleiner p teilerfremd zu p. Satz 1. [Fundamentalsatz der Arithmetik] Jede Zahl n∈ N kann als Produkt von Primzahlen n = p1 · · · pm dargestellt werden und unter der Bedingung p1 6 . . . 6 pm . ist diese Darstellung eindeutig. 2 M.Gruber, SS 2008 Diskrete Mathematik oor, modulo x ∈ R ganzzahliger Anteil von x) Denition 5. [oor] x, (oor aus Z Für , die kleiner oder gleich Eine Zahl x x bezeichnet bxc die gröÿte Zahl ist. mit Rest durch eine Zahl y dividieren heiÿt: Ermitteln, welches ganzzahlige Vielfache von in x y enthalten ist. Den verbleibenden Rest nennt man x mod y: Denition 6. [modulo] Für x, y ∈ Z ist x mod y = x − y · bx/yc . Im Fall y=0 legt man fest: bx/yc = 0. Beispiel 1. 5 mod 3 = 5 − 3 · b5/3c = 2, 5 mod −3 = 5 − (−3) · b5/(−3)c = −1, −5 mod 3 = −5 − 3 · b−5/3c = 1, −5 mod −3 = −5 − (−3) · b−5/(−3)c = −2. 3 M.Gruber, SS 2008 Diskrete Mathematik Klassischer euklidischer Algorithmus Den gröÿten gemeinsamen Teiler Zahlen m, n ∈ Z mit ggT(m, n) 0 6 m < n zweier 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 mod m = n − m · bn/mc n auch gemeinsamer Teiler von 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 M.Gruber, SS 2008 Diskrete Mathematik Erweiterter euklidischer Algorithmus ggT(x1, x0) (0 6 x1 < x0) Der wird berechnet durch die Rekursion xi+1 = xi−1 − xi · bxi−1/xic , die mit Mit " und qi = bxi−1/xic " # xi xi+1 " Aus xn+1 = 0 = Qi xn xn+1 # xi−1 xi " = und (3) ggT(x"1, x0) = #xn 6= 0 Qi = # " und 0 1 1 −qi xn a ∗ ∗ x1 gilt # xn+1 #" # b x0 endet. " # x0 = |QnQn−1 · · · Q}1 . {z x1 b =: a ∗ ∗ folgt die Darstellung ggT(x1, x0) = xn = ax0 + bx1 Z (a, b ∈ ) . (4) 5 M.Gruber, SS 2008 Beispiel 3. " # x6 x7 Diskrete Mathematik Mit den Zahlen von Beispiel 2 gilt " = 0 1 " = = #" 1 0 −3 5 −18 " # 3 1 #5 " 1 −1 #" # −8 87 29 # 87 54 54 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 2008 Diskrete Mathematik Ezienz des euklidischen Algorithmus Benachbarte Fibonacci-Zahlen sind teilerfremd. Dies sieht man, wenn man die rekursive Berechnung der Fibonacci-Zahl Fn+1 auf- rollt und die entstehenden Gleichungen als euklidische Divisionen interpretiert: Fn+1 = 1 · Fn + Fn−1 = b Fn+1 Fn c · Fn + Fn+1 mod Fn = 1 · Fn−1 + Fn−2 = b F Fn c · Fn−1 + Fn n−1 Fn mod Fn−1 .. . F F2 = 1 · F1 + F0 = b F2 c · F1 + F2 1 Diese Gleichungen Fn+1 , Fn zeigen noch mod etwas: Die Fibonacci-Zahlen sind die kleinsten Eingabedaten des euklidischen Al- gorithmus, die zu n Divisionen mit Rest führen. d.h. sind zur Berechnung des ggT zweier beliebiger Zahlen n F1 Schritte erforderlich, so ist x1 < x0 mindestens x0 > Fn+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 M.Gruber, SS 2008 Diskrete Mathematik modulo Für m∈ N, m > 2 und Zm := {0, . . . , m − 1} ten wir die Abbildung modulo rm : Z → Zm, a von a0 betrach- m a 7→ a mod m = a − m · ba/mc . Bemerkung 4. sich m rm(a) = rm(a 0) genau dann, wenn durch ein ganzzahliges Vielfaches von m unterscheidet. Beweis ⇒: Aus a − m · ba/mc = a 0 − m · ba 0/mc folgt a − a 0 = m · (ba/mc − ba 0 /mc). ⇐: Aus a = a 0 + km folgt a − m · ba/mc = (a 0 + km) − m · b(a 0 +km)/mc = a 0 +km−km−m·ba 0 /mc = a 0 −m·ba 0 /mc. Bemerkung 5. Auf Zm gibt es eine Addition und eine Multiplikation: a⊕b := (a + b) mod m a⊗b := ab mod m . 8 M.Gruber, SS 2008 Beispiel 4. ( Z6, ⊕) Diskrete Mathematik (Z6, ⊕, ⊗) In Z6 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 ist eine kommutative Gruppe : Das neutrale Element (der Addition) ist 0. Jedes Element hat ein eindeutig bestimmtes (additives) Inverses bezüglich z.B. ist −1 = 5, denn 0, 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 M.Gruber, SS 2008 In ( Z6 Diskrete Mathematik gilt folgende Multiplikationstabelle: Z6, ⊗) ⊗ 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 ist eine kommutative Halbgruppe : Es gibt ein neutrales Element der Multiplikation, nämlich ist ( Z6, ⊗) Element). 1. Damit ein sog. Monoid (Halbgruppe mit neutralem 1 und 5 sind invertierbar ( 1 1 = 1, 15 = 5), die anderen Elemente nicht. ( Z6, ⊕, ⊗) ist ein kommutativer Ring mit Einsele- ment, jedoch kein Integritätsbereich, d.h. es gibt sog. Nullteiler; z.B. ist 2 · 3 = 0. 10 M.Gruber, SS 2008 Man kann beliebige ⊕ Diskrete Mathematik und a, b ∈ Z ⊗ auf ausdehnen, indem man für deniert: a⊕b = (a mod m) ⊕ (b mod m) (5) a⊗b = (a mod m) ⊗ (b mod m) . (6) Bemerkung 6. Die Formeln (5) und (6) machen das Rechnen modulo 1. Z Rechnen mit ⊕: Mit m leicht. 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 M.Gruber, SS 2008 Diskrete Mathematik Modulare Inverse Denition 7. [modulare Inverse] x ∈ Zm invertierbar, wenn es ein das x⊗y = 1 von x. gilt. y Man y ∈ Zm nennt gibt, für heiÿt dann modulare Inverse Die Menge der invertierbaren Elemente von bezeichnet man mit Satz 2. x∈ Z∗m Z∗m . genau dann, wenn fremd sind, d.h. wenn Zm ggT(x, m) = 1 x und m teiler- gilt. Beweis Wir zeigen: x invertierbar ⇒ x und m teilerfremd. Wenn x ∈ Zm invertierbar ist, gibt es ein y ∈ Zm mit x ⊗ y = 1 in Zm , d.h. xy − m · bxy/mc = 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. m)(x mod m) = 1. Damit gilt auch a ⊗ x = (a mod 12 M.Gruber, SS 2008 Diskrete Mathematik Bemerkung 7. In Beispiel 4 war Z∗6 = {1,5} . Nun weiÿ man auch, wieso. Bemerkung 8. verse in Zm Wie berechnet man modulare In- ? Mit dem erweiterten euklidischen Algo- rithmus! 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 6= 1, d mod m = 1, so ist so ist x x nicht invertierbar. Ist invertierbar und a mod m das modulare Inverse von x. Bemerkung 9. eine Primzahl, so ist jedes Element von diesem Falle Ist p Zp \ {0} Zp \ {0} = Z∗p x∈ teilerfremd zu p, also ist in . 13 M.Gruber, SS 2008 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 14