Kapitel 3 Elementare Arithmetik A lady of 80 named Gertie Had a boyfriend of 60 named Bertie She told him emphatically That viewed mathematically By modulus 50 she’s 30 Limerik of J.W. McClellan Arithmetik ist das Teilgebiet der Mathematik, welches auch als Synonym zum Begriff Zahlentheorie verstanden werden kann. Elementare Arithmetik bezeichnet allgemein das Rechnen mit natürlichen Zahlen und ganzen Zahlen und die Untersuchung der Konsequenzen, die sich daraus ergeben, dass die Division in den ganzen Zahlen nur eingeschränkt möglich ist. 3.1 Ganze Zahlen In Abschnitt 2.1 haben wir die natürlichen Zahlen geschaffen“. Skizzieren wollen wir nun den ” Konstruktionsweg von den natürlichen Zahlen zu den ganzen Zahlen. Wir sehen dabei die Nützlichkeit des Begriffs der Äquivalenzrelation“ ein. Auf N × N läßt sich nämlich eine Äquivalenzrelation durch R := {((m, n), (k, l)) ∈ N2 × N2 |m + l = n + k} , d.h. (m, n) ∼ (k, l) : ⇐⇒ m + l = n + k , einführen. Man bestätigt leicht, dass in der Tat eine Äquivalenzrelation vorliegt. Etwa folgt die Symmetrie allein schon aus der Kommutativität der Addition in den natürlichen Zahlen; siehe Rechenregel 2.2. Die Zuordnung eines Paares (m, n) zu einer Klasse [(k, l)] geschieht unter dem Gesichtspunkt, dass die Differenz m − n gleich der Differenz k − l ist und dies liefert den Zusammenhang zur Menge der ganzen Zahlen Z, wenn wir sie schon als bekannt voraussetzten. Also sollte etwa [(n, n)] für 0 , [(n + 1, n)] für 1 , [(n, n + 1)] für − 1 , [(n + n, n)] für n , [(n, n + n)] für − n , stehen. Der Weg, ausgehend von der Kenntnis der natürlichen Zahlen, die ganzen Zahlen zu konstruieren, ist also vorgezeichnet: 29 Man führe Z als Menge der Äquivalenzklassen (N × N)/ R ein. Vervollständigt wird dieser Schritt durch die Beobachtung, daß durch [(m, n)] ⊕ [(k, l)] := [(m + k, n + l)] eine Addition und durch [(m, n)] ⊙ [(k, l)] := [(m · k + n · l, m · l + n · k)] eine Multiplikation eingeführt wird. Die Anordnung der ganzen Zahlen spiegelt sich in [(m, n)] ⊳ [(k, l)] : ⇐⇒ m + l < n + k bzw. [(m, n)] [(k, l)] : ⇐⇒ m + l ≤ n + k wieder. Hierbei ist ja “ < , ≤ “ schon von den natürlichen Zahlen her bekannt. Beachte bei diesen Definitionen stets, dass [(m, n)] für m−n stehen sollte. Ergänzend sei nun noch die Subtraktion [(m, n)] ⊖ [(k, l)] := [(m, n)] ⊕ [(l, k)] . eingeführt. Bemerkung 3.1.1 Wenn man mit Äquivalenzklassen neue Objekte unter Verwendung von Repräsentanten für die Klassen definiert, hat man sich zu vergewissern, dass die Definition vom Repräsentanten für die Klasse unabhängig ist. Dies ist oben bei der Definition der Addition, Multiplikation und Kleiner–Beziehung der Fall. Bei der Addition etwa bedeutet dies, nachzuweisen, dass [(m, n)] ⊕ [(k, l)] = [(m′ , n′ )] ⊕ [(k′ , l′ )] ist, falls [(m, n)] = [(m′ , n′ )] , [(k, l)] = [(k′ , l′ )] gilt. Dies sieht man mit Hilfe der Identitäten m + n′ = m′ + n , k + l′ = k′ + l sofort ein. Entsprechend unserer Hinführung finden wir die natürlichen Zahlen wieder als Teilmenge e := {[(m + n, m)]|n ∈ N} mit einem beliebigen m ∈ N . Auch diese Menge erfüllt nun die N Peano–Axiome: e; • 1̃ := [(n + 1, n)] ∈ N • n] + 1 := [(n + n + 1, n)] Nachfolger von n e; • 1̃ ist kein Nachfolger, denn aus 1̃ = [(n+n+1, n)] folgt sofort die widersprüchliche Aussage 1 = n + 1; e so dass 1̃ ∈ M e. f ⊂ N, f und (ñ ∈ M f =⇒ n] f), dann ist offenbar M f=N • Ist M +1∈M e , n ∈ N und die Null 0̃ := [(n, n)] . Zusätzlich haben wir die negativen Zahlen [(n, n + n)] ∈ N Die aufwendige Schreibweise wollen wir nun aber wieder vermeiden. Wir tun dies, indem wir, statt die Existenz der natürlichen Zahlen axiomatisch zu fordern, die ganzen Zahlen axiomatisch einführen. 30 Es gibt Mengen N, Z , ein Element 0 ∈ Z, Abbildungen Z × Z ∋ (a, b) 7−→ a + b ∈ Z, Z × Z ∋ (a, b) 7−→ a · b ∈ Z, und eine Vergleichsoperation ≤ mit folgenden Eigenschaften: 1. (a + b) + c = a + (b + c) für alle a, b, c ∈ Z . 2. a + 0 = 0 + a für alle a ∈ Z . 3. Zu a ∈ Z gibt es genau ein (−a) ∈ Z mit (a + (−a)) = 0 = ((−a) + a) . 4. a + b = b + a für alle a, b ∈ Z . 5. (a · b) · c = a · (b · c) für alle a, b, c ∈ Z . 6. a · b = b · a für alle a, b ∈ Z . 7. a · (b + c) = a · b + a · c für alle a, b, c ∈ Z . 8. N ⊂ Z , 1 6= 0 , Z = N ∪ {0} ∪ −N . 9. 1 · a = a , 0 · a = 0 für alle a ∈ Z . 10. a ≤ b ⇐⇒ b + (−a) ∈ N ∪ {0} . (Addition) (Multiplikation) (Assoziativgesetz) (0 ist neutrales Element) ((−a) ist Negatives von a) (Kommutativgesetz) (Assoziativgesetz) (Kommutativgesetz) (Distributivgesetz) (1 ist neutrales Element) Man beachte aber, dass nur die Existenz der natürlichen Zahlen eine wesentliche Forderung ist. Wir tun dies durch Anführung von Eigenschaften, die das übliche Rechnen in den ganzen Zahlen möglich machen. (Wir legen dabei nicht Wert auf ein minimales Gerüst von Axiomen.) Dies deckt sich mit obiger Konstruktion. Zur Abkürzung führen wir noch die Subtraktion durch Z × Z ∋ (a, b) 7−→ a − b := a + (−b) ∈ Z ein, schreiben meist kurz ab für a · b und vereinbaren die Schreibweise a < b für a ≤ b, a 6= b . Damit können wir nun in Z und N genauso rechnen, wie wir es gewohnt sind. 3.2 Teilbarkeit Definition 3.2.1 Seien a, b ∈ Z. Wir sagen, dass a die Zahl b teilt, wenn es k ∈ Z gibt mit b = ka. Wir schreiben dafür a|b . Ist b nicht durch a teilbar, so schreiben wir a 6 | b. Srechweisen: Für a|b: a teilt b, b ist Teiler von a, a ist durch b teilbar. Für a 6 | b: a teilt b nicht, b ist kein Teiler von a, a ist nicht durch b teilbar. Folgerung 3.2.2 Seien a, b, c, d ∈ Z. Dann gilt: (1) a|a; a|b und b|a =⇒ a = ±b; a|b und b|c =⇒ a|c. (2) d|a und d|b =⇒ d|(ax + by) für alle x, y ∈ Z. (3) a|b und a|(b + c) =⇒ a|c. 31 Beweis: Zu 1. a|a, da a = 1 · a. Es gibt k, l ∈ Z mit b = ka, a = lb. Ist b = 0, dann ist a = 0 und nichts ist mehr zu zeigen. Sei nun b 6= 0; o.E. b > 0. Dann folgt aus b = klb offenbar kl ∈ N, kl = 1 und damit k = ±1, l = ±1. Wir haben b = ka, c = lb mit k, l ∈ Z. Daraus folgt c = lb = lka, also a|c. Zu 2. Wir haben a = kd, b = ld. Seien x, y ∈ Z. Dann gilt ax + by = kdx + ldy = (kx + ly)d; also d|(ax + by) . Zu 3. Wir haben b = ka, b + c = la mit k, l ∈ Z. Daraus folgt c = la − b = la − ka = (l − k)a, also a|c. Bei Teilbarkeitsfragen in Z können wir uns in der Regel immer auf positive Teiler, d.h. auf Teiler in N, zurückziehen, da von den zwei Zahlen a, −a stets eine in N liegt, falls a 6= 0; der Fall a = 0 ist uninteressant, da dann auch b = 0 . In diesem Abschnitt kommen wir ausschließlich mit den Eigenschaften der ganzen Zahlen aus, wie sie sich aus der axiomatischen Einführung der natürlichen Zahlen mittels der Peano– Axiome ergaben; insbesondere haben wir die Rechenarten“ +, −, ·, ≤, < uneingeschränkt zur ” Verfügung. Nicht zur Verfügung steht die Division ÷, eine Tatsache, die die Reichhaltigkeit der Resultate bzgl. Teilbarkeit beschert. Satz 3.2.3 (Division mit Rest) Für alle a ∈ Z, b ∈ N gibt es eindeutig bestimmte Zahlen q, r ∈ Z mit a = bq + r und 0 ≤ r < b. Beweis: Wir beweisen zunächst die Existenz von q, r für a ≥ 0 durch vollständige Induktion: a = 0 : Setze q := r := 0 . a + 1 : Ist a + 1 < b, so gilt a + 1 = 0b + (a + 1) und wir sind fertig. Ist a + 1 ≥ b, so folgt aus der Induktionsvoraussetzung a + 1 − b = qb + r mit q ∈ Z, 0 ≤ r < b. Also a + 1 = (q + 1)b + r. Die Existenz folgt für a < 0 aus der Anwendung der eben bewiesenen Aussage auf −a gemäß −a = q ′ b + r ′ , 0 ≤ r ′ < b durch a= (−q ′ − 1)b + (b − r ′ ) , falls r ′ 6= 0 (−q ′ )b , falls r ′ = 0 Um die Eindeutigkeit zu beweisen, nehmen wir ein zweites Zahlenpaar q ′ , r ′ mit a = q′b + r′, 0 ≤ r′ < b , wobei o. E. r ≥ r ′ sei. Dann ist 0 ≤ r − r ′ < b, r − r ′ = (q − q ′ )b, q − q ′ ≥ 0, und dies ist nur mit q ′ = q, r = r ′ verträglich. Wenn man den Rest bei Division von a durch b gemäß a = bq + r , 0 ≤ r < b, bestimmt, so sagt man manchmal auch, man reduziert a modulo b . Der Faktor q in der Darstellung mit Rest ist die größte ganze Zahl, die q≤ a ≤q+1 b 32 erfüllt, wobei wir die Bruchschreibweise im Vorgriff auf Kapitel 4 verwendet haben. Dafür ist auch die Schreibweise a q=⌊ ⌋ b üblich. Die Methode Division mit Rest“ wird seit je genutzt, um Zahlen von einem Zahlsystem in ” ein anderes umzurechnen. Sei g eine natürliche Zahl, g ≥ 2 . Zu jeder natürlichen Zahl n gibt es dann eindeutig bestimmte natürliche Zahlen l und a0 , . . . , al mit al 6= 0 und 0 ≤ a1 < g sowie n = a0 + a1 g + · · · + al gl = l X ai gi . i=0 Man gewinnt die Ziffern a0 , . . . , al (g-adische Ziffern von n bezüglich der Basis g) dieser so genannten g-adischen Entwicklung von n durch fortlaufende Division mit Rest. Wir schreiben damit n = (al , . . . , a1 , a0 )g oder kurz n = (al · · · a1 a0 )g . Diese Berechnungsmethode nimmt den euklidischen Algorithmus vorweg, den wir im nächsten Abschnitt besprechen werden. Hier erläutern wir das Schema an einem Beispiel. Beispiel 3.2.4 Sei n := |1 + ·{z · · + 1}, also n = (109)10 . n-mal Wir rechnen die Zahl n aus dem Dezimalsystem um in das Dualsystem. Sei g = 2 . Aus den folgenden Rechenschritten 109 = 2 · 54 + 1 54 = 2 · 27 + 0 27 = 2 · 13 + 1 13 = 2 · 6 + 1 6 = 2·3+0 3 = 2·1+1 1 = 2·0+1 lesen wir ab: n = (1101101)2 3.3 Euklidischer Algorithmus Fragt man nach gemeinsamen Teilern zweier ganzer Zahlen a, b, so interessiert insbesondere der größte dieser gemeinsamen Teiler. Dabei können wir uns dann auf positive Teiler beschränken, denn 1 ist stets ein gemeinsamer Teiler von a und b. Definition 3.3.1 Seien a, b ∈ Z, die nicht beide 0 sind. Eine Zahl d ∈ N heißt größter gemeinsamer Teiler von a, b genau dann, wenn (1) d|a und d|b , (2) Ist d′ ∈ N ein Teiler von a und b, so teilt d′ auch d . 33 gilt. Wir schreiben d = ggT (a, b) = a ⊓ b . Der größte gemeinsame Teiler d gemäß Definition 3.3.1 ist eindeutig bestimmt dank der Tatsache, dass wir d ∈ N gefordert haben, denn sind d˜ zwei größte gemeinsame Teiler von a, b, ˜ also d = ±d, ˜ d, d˜ ∈ N . dann gilt d|d˜ und d|d, Es sollte klar sein, wie nun der größte gemeinsame Teiler von endlich vielen ganzen Zahlen erklärt ist. Beispiel: 6 ⊓ 10 = 2, 6 ⊓ 10 ⊓ 30 = 2, 6 ⊓ 10 ⊓ 15 = (6 ⊓ 10) ⊓ 15 = 6 ⊓ (10 ⊓ 15) = 1 . Sprechweise: Seien a, b ∈ Z. Gilt ggT(a, b) = a ⊓ b = 1 , so nennen wir a, b teilerfremd. Lemma 3.3.2 Seien a, b ∈ Z nicht beide Null. Dann gilt a ⊓ b = (−a) ⊓ b = (−a) ⊓ (−b) = a ⊓ (−b) . Beweis: Wir beweisen etwa die erste Gleichheit. Diese folgt aber aus der einfachen Beobachtung, dass d ein Teiler von a und b genau dann ist, wenn d ein Teiler von −a und b ist. Wir suchen den größten gemeinsamen Teiler von Zahlen a, b ∈ Z . Beachte, dass es wegen Lemma 3.3.2 ausreicht, den größten gemeinsamen Teiler für Zahlen in N zu berechnen. Lemma 3.3.3 Sei a ∈ Z und b ∈ N. Dann folgt aus der Darstellung a = qb + r , q ∈ Z, die Aussage a ⊓ b = b ⊓ r. Beweis: Ist d ein Teiler von a, b, dann ist d ein Teiler von b und r und umgekehrt (siehe Folgerung 3.2.2). Das obige Lemma ist die Basis des folgenden Algorithmus“ zur Berechnung des größten ” gemeinsamen Teilers zweier Zahlen a, b . . Das Wort Algorithmus“ erläutern wir im nächsten ” Kapitel etwas genauer. Algorithm 1 Der euklidische Algorithmus EIN a, b ∈ Z ; o.E. a ≥ b > 0 . Schritt 0 a′ := a, b′ := b . Schritt 1 a′ = qb′ + r mit 0 ≤ r < b′ . Schritt 2 Ist r = 0, gehe zu AUS, sonst setze a′ := b′ , b′ := r, und gehe zu Schritt 1. AUS d := b′ = a ⊓ b . Die Aussage, dass d der größte gemeinsame Teiler von a, b ist, falls die Situation r = 0 erreicht wird, folgt aus dem Lemma 3.3.3. Bleibt noch zu klären, dass die Situation r = 0 in endlich vielen Schritten wirklich erreicht wird. Dies folgt aber aus der Tatsache, dass für zwei aufeinanderfolgende Durchläufe von Schritt 1 mit (a′ , b′ ) , (a′′ , b′′ ) sicherlich 0 ≤ b′′ < b′ , b′ , b′′ ∈ N0 gilt. Also muss schließlich das Verfahren bei r = 0 abbrechen. 34 Der euklidische Algorithmus gilt als ein recht schneller Algorithmus: um den größten gemeinsamen Teiler d von a, b auszurechnen, ist etwa soviel Aufwand wie für die Multiplikation von a und b nötig; wir kommen in Kapitel 5 darauf zurück. Er findet vielfältig Anwendung in der mathematischen Informatik. Wir geben dem Euklidischen Algorithmus, wohlwissend, dass der Schritt 1 nur endlich oft durchlaufen wird, eine explizite Fassung: Euklidischer Algorithmus Kettenbruchentwicklung a b r0 r1 r1 r2 r0 := a , r1 := b, r0 = q1 r1 + r2 , 0 < r2 < r1 , r1 = q2 r2 + r3 , 0 < r3 < r2 , .. . .. . .. . rk−1 = qk rk + rk+1 , 0 < rk+1 < rk , rk = qk+1 rk+1 , rk−2 rk−1 rk rk+1 = r0 r1 = q1 + rr12 = q2 + rr23 .. . = qk + r rk k−1 = qk+1 In dieser Darstellung ist rk+1 = rk−1 ⊓ rk = · · · = r0 ⊓ r1 = a ⊓ b nach Lemma 3.3.3. Beachte: Bei der Spalte Kettenbruchentwicklung“ haben wir Brüche vorweggenommen. Für ” ein Verständnis der Kettenbruchentwicklung reicht ein elementares Wissen über rationale Zahlen aus. Aus der obigen Darstellung des euklidischen Algorithmus lesen wir r0 r2 1 1 1 a = ... (3.1) = = q1 + = q1 + r1 = q1 + = q1 + r 3 1 b r1 r1 q 2 + r2 q2 + r2 r4 q3 + r3 r ab; wir wissen dabei, dass stets 0 < k+1 rk < 1 gilt und dass das Schema nach k Schritten abbricht, denn in formaler Interpretation haben wir rk+2 = 0 . Die berechneten Größen q1 , . . . , qk+1 schreiben wir als a [q1 , . . . , qk+1 ] oder = [q1 , . . . , qk+1 ] b auf und bezeichnen dies als Kettenbruch. Der Kettenbruch kann mitunter auch sehr lang“ ” sein. In vielen Fällen ist man schon mit einer Näherung [q1 , . . . , ql ] , 1 ≤ l < k + 1 , zufrieden, d.h. mit der Näherung, die entsteht, wenn man rl rl+1 =0 setzt. 35 Beispiel 3.3.4 a = 104629 , b = 432000 . 104629 = 0 · 432000 + 104629 432000 = 4 · 104629 + 13484 104629 = 7 · 13484 + 10241 13484 = 1 · 10241 + 3243 10241 = 3 · 3243 + 512 3243 = 6 · 512 + 171 512 = 2 · 171 + 170 171 = 1 · 170 + 1 170 = 170 · 1 Also gilt: 104629 ⊓ 432000 = 1 . Bemerkung 3.3.5 C. Huygens (1629–1695) entwickelte Kettenbruchentwicklungen, als er ein Zahnradmodell des Sonnensystems bauen wollte. Gesucht wurden möglichst einfache Brüche“, ” für die gelten sollte: Umlaufzeit von Planet 1 Zahnzahl von Zahnrad 1 = . Zahnzahl von Zahnrad 2 Umlaufzeit von Planet 2 Werden die Umlaufzeiten der Planeten sehr genau gemessen, dann kann rechts ein Bruch mit sehr großem Zähler und Nenner entstehen. Die Beispiele 3.3.6, 3.3.9 illustrieren dies. Beispiel 3.3.6 Die Zahlen a = 71755875 b = 61735500 kommen in Berechnungen des Astronomen Aristarchus von Samos vor. Für ab verwendet er die 43 . Sie ergibt sich, wenn man den Kettenbruch zu a geeignet abbricht: Näherung 37 b 1 a ∼1+ . b 6 + 61 Beispiel 3.3.7 Die Umlaufzeit der Erde um die Sonne beträgt ziemlich genau 365 + 104629 Tage . 432000 Aus der Kettenbruchentwicklung 104629 = [0, 4, 7, 1, 3, 6, 2, 1, 170] 432000 ergeben sich Ansätze für Kalender: [0] = 0 [0, 4] = Keine Schaltjahre (Anpassung von Zeit zur Zeit durch Hinzufügen eines Tages) 1 4 [0, 4, 7, 3, 6] = Alle vier Jahre ein Schalttag 194 801 In 800 Jahren läßt man sechs Schaltjahre ausfallen (und zwar in den Jahren, deren Jahreszahlen durch 400 teilbar ist.) 36 Beachte: Da a1 ⊓ a2 ⊓ · · · ⊓ an = a1 ⊓ (a2 ⊓ · · · ⊓ an ) gilt, ist klar, dass wir nun auch ein Verfahren haben, das den größten gemeinsamen Teiler von a1 , . . . , an bereitstellt: Man hat es nur mehrmals anzuwenden. Eine wichtige Konsequenz aus dem Euklidischen Algorithmus ist Satz 3.3.8 (Lemma von Bezout) Seien a, b ∈ Z. Dann gibt es Zahlen s, t ∈ Z mit a ⊓ b = sa + tb . Beweis: O.E. a ≥ b > 0 . Die Aussage folgt dadurch, dass wir den euklidischen Algorithmus in der expliziten Fassung rückwärts lesen. Wir strukturieren dies, indem wir nachrechnen, dass für 0 ≤ i ≤ k + 1 gilt: ri = si a + ti b , mit si , ti ∈ Z. (3.2) Dies ergibt sich so: Für i = 0 setze s0 := 1, t0 := 0 und für i = 1 setzte s1 := 0, t1 := 1 . Nun setzen wir si+1 := si−1 − qi si , ti+1 := ti−1 − qi ti , 1 ≤ i ≤ k. (3.3) Dann gilt offenbar die obige Aussage. Beispiel 3.3.9 Wir betrachten wieder Beispiel 3.3.4. Für das Tupel (ri , qi , si , ti ) haben wir dann nach (3.2) und (3.3) die folgende Sequenz (× bedeutet uninteressant oder nicht definiert): (36667, ×, 1, 0), (12247, 2, 0, 1), (12173, 1, 1, −2), (74, 164, −1, 3), (37, ×, 165, −494). Also haben wir 37 = 36667 ⊓ 12247 = 165 · 36667 − 494 · 12247 Folgerung 3.3.10 Seien a, m ∈ Z, die nicht beide Null sind, mit a ⊓ m = 1 . Dann gibt es b ∈ Z mit m|(ab − 1) . Beweis: Wir wissen aus dem Lemma von Bezout 1 = ax + my mit x, y ∈ Z . Setze b := x . Dann ist ab − 1 = −my = m(−y) . Die obige Folgerung können wir so lesen, dass bei Teilerfremdheit von a und m zu a eine Zahl b existiert, die die Gleichung a·b=1 bis auf ein Vielfaches von m löst. 37 Maple - Illustration 3.1 Maple kennt die ganzen Zahlen und die rationalen Zahlen, wobei die Anzahl der Stellen von Zähler und Nenner jeweils auf 524279 beschränkt ist. Mit diesen Zahlen rechnet Maple exakt. Der Befehl ifactor zerlegt eine ganze Zahl in ihre Primfaktoren. Hier haben wir mit ‘‘“ das letz” te Ergebnis aufgerufen. Mit isprime überprüft man Zahlen auf die Eigenschaft, Primzahl zu sein. 4 > 2(2 ) ; 65536 > ifactor(‘‘); (2)16 > seq(k2 -k-41, k= 34..41); 1163,1231,1301,1373,1447,1523,1601,1681 > seq(isprime(k2-k-41), k= 35..41); true,true,true,true,true,true,true,false Kommen wir nochmals auf Primzahlen zurück. Dies sind natürliche Zahlen p 6= 1, die nur die Teiler 1 und p haben. Wir wissen schon, dass es unendlich viele Primzahlen gibt. Wie testet man, ob eine zahl n ∈ N eine Primzahl ist? Ein Primzahltest leitet sich aus der Äquivalenz n Primzahl ⇐⇒ n|((n − 1)! + 1) ab. Diese Äquivalenz wird als Satz von Wilson bezeichnet.1 Die Probiermethode – man probiere alle Primzahlen p ≤ n als mögliche Teiler durch – kann dahin verbessert werden, dass man nur solche p mit p2 ≤ n durchzuprobieren hat, da bei einer Zerlegung n = pq, p, q Primzahlen, für einen der beiden Faktoren sicherlich gilt, dass er dem Quadrate nach nicht grö”ser als n ist. Aber hier hat man das Problem, dass man von allen Zahlen z mit z 2 ≤ n wissen sollte, ob sie Primzahlen sind. Da aber jede Primzahl p von der Form p = 6k±1, k ∈ N, ist (Beweis!) können wir dieses Problem umgehen, indem wir mit solchen 6k ± 1 testen. Man hat dann aber immer noch mit einer Anzahl von Zahlen zu testen, die etwa bei einer 100–stelligen Zahl einen nicht zu bewältigender Aufwand darstellt. Folgerung 3.3.11 (Lemma von Euklid) Teilt eine Primzahl ein Produkt a1 · · · ar natürlicher Zahlen, so teilt p wenigstens einen der Faktoren a1 , . . . , ar . Beweis: O. E. sei r = 2. Also haben wir a1 a2 = kp mit k ∈ N . Teilt p die Zahl a1 nicht, dann ist p ⊓ a1 = 1, da p eine Primzahl ist, und es gibt nach Satz 3.3.8 s, t ∈ Z mit 1 = sp + ta1 . Daraus folgt a2 = spa2 + ta1 a2 = p(sa2 + tk). Also teilt p die Zahl a2 . Satz 3.3.12 (Primfaktorzerlegung) Jede natürliche Zahl n ≥ 2 läßt sich bis auf die Reihenfolge der Faktoren eindeutig als Produkt von Primzahlen darstellen. Beweis: Die Existenz einer Darstellung für n ∈ N beweisen wir induktiv: Für n = 2 ist dies nach der obigen Vereinbarung über das einfache Produkt klar. 1 Schon G.W. Leibniz hat diesen Satz vermutet, der erste vollständige Beweis stammt von J.L. Lagrange2 , etwa 100 Jahre später hat ihn J. Wilson nachentdeckt. Man sieht schnell, dass, was den Rechenaufwand betrifft, nicht viel gewonnen ist, denn (n − 1)! auszurechnen, ist eine aufwendige Angelegenheit. 38 n + 1 : Ist n + 1 eine Primzahl, dann ist nach Vereinbarung über das einfache Produkt nichts mehr zu zeigen. Anderenfalls gilt n + 1 = pm mit 1 < p, m < n + 1. O.E. können wir nun annehmen nach Lemma 2.4.2, dass m einen Teiler p besitzt, der eine Primzahl ist; also n + 1 = pm mit 1 < p, m < n + 1 . Nach Induktionsvoraussetzung gilt m = p2 · · · pr , p2 , . . . , pr Primzahlen. Dann liegt in n + 1 = pp2 · · · pr eine Zerlegung von n + 1 in Primfaktoren vor. Zur Eindeutigkeit: Sei n = p1 · · · pr = q1 · · · qs mit Primzahlen p1 , . . . , pr , q1 , . . . , qs . Durch Induktion über n zeigen wird, dass r = s und nach Umnumerierung p1 = q1 , . . . , pr = qr gilt. p1 teilt das Produkt q1 · · · qs und damit einen der Faktoren q1 , . . . , qs nach Folgerung 3.3.11. Also etwa nach Umnumerierung p1 |q1 . Da q1 Primzahl ist, ist p1 = q1 . Also (Kürzungsregel) p2 · · · pr = q2 · · · qs =: m . Da m < n gilt, sagt die Induktionsannahme r = s, p2 = q2 , . . . , pr = qs nach eventueller Umnumerierung und wir sind fertig. Die Herstellung der Primfaktorzerlegung einer (großen) Zahl ist kein leichtes Unterfangen. Die Schwierigkeit wird dadurch beleuchtet, dass nahezu gleiche Zahlen eine sehr verschiedene Primfaktorzerlegung besitzen können: 370273 = 43 · 79 · 109 , 370277 = 17 · 23 · 947 , 370279 = 7 · 13 · 13 · 313 . Im Abschnitt über das RSA-Schema, einem Verschlüsselungsschema, kommen wir auf dieses Faktum der Schwierigkeit, eine Zerlegung einer (großen) Zahl in ein Produkt zweier Zahlen herzustellen, zurück. Definition 3.3.13 Seien a, b ∈ Z, die nicht beide 0 sind. Eine Zahl k ∈ N heißt kleinstes gemeinsames Vielfaches von a, b genau dann, wenn gilt: (1) a|k und b|k , (2) Sind a, b Teiler von k′ ∈ N, so ist k ein Teiler von k′ . Wir schreiben k = kgV (a, b) = a ⊔ b . Bemerkung 3.3.14 Das kleinste gemeinsame Vielfache von Zahlen a, b ∈ N ist die kleinste Zahl m ∈ N, für die a|m , b|m gilt. Kennt man die Primfaktorzerlegung von a und b, so kann man es sehr einfach ablesen(, wie übrigens auch den größten gemeinsamen Teiler). 3.4 Modulare Arithmetik Die modulare Arithmetik3 beschreibt das Rechnen im Ring Zm , wobei m ∈ N, m ≥ 2, der gewählte Modul ist. Der Ring Zm kommt als Menge der Äquivalenzklassen/Restklassen bezüglich der Äquivalenzrelation Division mit Rest“ bezüglich des Moduls m zustande: ” Zm := {[0], [1], . . . , [m − 1]} wobei [i] := {z ∈ Z|z = qm + i für ein q ∈ Z} . Beachte, dass etwa die Klasse [1] auch als die Klasse [m + 1] beschrieben werden kann; wir haben in der Definition von Zm ein naheliegendes Representantensystem gewählt. Klar, für m = 2 erhalten wir gerade die Einteilung der natürlichen Zahlen in die Klassen gerade Zahlen und ungerade Zahlen. Für diese Klassen hat man in natürlicher Weise eine Addition und eine Multiplikation: gerade + gerade = gerade , ungerade + gerade = ungerade gerade · gerade = gerade , ungerade · gerade = gerade 3 Das am Beginn des Kapitels vorgestellte Gedicht hat zu tun mit dem Rechnen modulo 50 39 Diese Beobachtung schreiben wir nun fort auf Zm : Addition: [i] + [j] := [i + j] , i, j ∈ {0, 1, . . . , m − 1} ; Multiplikation: [i] · [j] := [ij] , i, j ∈ {0, 1, . . . , m − 1} . Damit dies wohldefiniert ist, muss noch gezeigt werden: aus [i] = [j], [i′ ] = [j ′ ] folgt [i+j] = [i′ +j ′ ] und [ij] = [i′ j ′ ] . Wir beweisen dies am Beispiel der Multiplikation. [i] = [j], [i′ ] = [j ′ ] bedeutet i′ = pm + i, j ′ = qm + j für p, q ∈ Z . Daraus folgt i′ j ′ = (pm + i)(qm + j) = (iqm + jpm + pqm)m + ij also [ij] = [i′ j ′ ] . [0] ist das neutrale Element für die Addition, [1] ist das neutrale Element für die Multiplikation: [i] + [0] := [i] , [i] · [1] = [i] , i, j ∈ {0, 1, . . . , m − 1} . Weiterhin ist leicht zu sehen, dass [m − i] das Inverse von [i] bezüglich der Addition ist. Nun fassen wir zusammen: Zm ist bezüglich der Addition eine kommutative Gruppe. Dieses Ergebnis gilt unabhängig von m. Für die Multiplikation ist die Situation nicht so einfach, denn es gibt die Situation, dass Nullteiler auftreten; etwa [2] · [2] = [2 · 2] = [0] in Zm für m = 4 . Also kann hier [2] kein Inverses bezüglich der Multiplikation haben. Ist nun m eine Primzahl, dann ist, wie wir wissen, die Klasse [1] ein neutrales Element und aus dem Lemma von Bezout 3.3.8 folgern wir, dass es zu jeder Zahl k = 1, . . . , m − 1 ein l ∈ N gibt mit m teilt kl − 1; d.h. [k] · [l] = [1] . Somit hat man für jedes Element in Zm \{[0]} ein Inverses. Die Gruppentafeln – so bezeichnen wir eine vollständige Auflistung der Verknüpfungen der Gruppenelemente – zu m = 5 sehen wie in 3.1 aufgeführt aus. + [0] [1] [2] [3] [4] · [0] [1] [2] [3] [4] [0] [0] [1] [2] [3] [4] [0] [0] [0] [0] [0] [0] [1] [1] [2] [3] [4] [0] [1] [0] [1] [2] [3] [4] [2] [2] [3] [4] [0] [1] [2] [0] [2] [4] [1] [3] [3] [3] [4] [0] [1] [2] [3] [0] [3] [1] [4] [2] [4] [4] [0] [1] [2] [3] [4] [0] [4] [3] [2] [1] (a) (b) Abbildung 3.1: Gruppentafeln zu Z5 Man beachte, dass sowohl in der Gruppentafel zur Addition als auch in der Gruppentafel zur Multiplikation in jeder Zeile und Spalte jede Klasse genau einmal vertreten ist. Beachte ferner, dass die Potenzen des Elements [2] alle Elemente von Z∗5 := Z5 \{[0]} – die triviale Nullzeile und Nullspalte ist in der Gruppentafel überflüssig – durchlaufen: [2]0 = [1] , [2]1 = [2] , [2]2 = [4] , [2]3 = [3] , [2]4 = [1] . Man nennt eine Gruppe, die ein solches zyklisches Element besitzt, eine zyklische Gruppe. 40 + 0 1 a b · 0 1 a b 0 0 1 a b 0 0 0 0 0 1 1 0 b a 1 0 1 a b a a b 0 1 a 0 a b b b a 1 0 b 0 b (a) 1 1 a (b) Abbildung 3.2: Gruppentafeln zu einem Körper mit 4 Elementen Bemerkung 3.4.1 Für beliebiges m ∈ N, m ≥ 2, ist (Zm , +, ·) ein Ring mit Einselement. Ist p ∈ N eine Primzahl, so ist (Zm , +, ·) sogar ein Körper, ein endlicher, denn Zp hat ja (nur) p Elemente. Damit kennen wir zu jeder Primzahl p einen Körper mit p Elementen. Wie sieht es aber mit den Lücken m = 4, m = 6, m = 8, . . . aus? Es gibt das diese Frage abschließende Resultat, dass es einen Körper mit m Elementen genau dann gibt, wenn m eine Primzahlpotenz ist. In 3.2 findet man einen Körper mit 4 Elementen in abstrakter, d.h. nicht in einer schon durch bekannte Objekte beschriebene Form. Wo werden endliche Körper benötigt? Allgemein in der Diskreten Mathematik, der Mathematischen Informatik und speziell in der Verschlüsselung von Daten. Bemerkung 3.4.2 Wenn man mehrere Additionen oder Multiplikationen von Restklassen hintereinander durchführt, ist es oft zweckmäßig, in jedem Schritt den Rest (bei Division durch den betrachteten Modul m) zu bilden. Dadurch werden die Restklassen immer durch Repräsentanten aus {0, . . . , m − 1} dargestellt und man vermeidet das Rechnen mit größeren Zahlen. Beispiel 3.4.3 Wir wollen [22]16 = [2216 ] in Z53 berechnen, ohne die große Zahl 2216 in ihrer Dezimaldarstellung zu bestimmen, d.h. wir wollen 2216 modulo 53 reduzieren. Wir haben: [22] · [22] = [484] = [7] , [22]4 = [7]2 = [−4] , [22]8 = [−4]2 = [16] , [22]16 = [16]2 = [44] . 3.5 Pseudozufallszahlen Um die umständliche Verwendung von Tabellen zu vermeiden, werden Folgen von Zufallszahlen verwendet, die im Allgemeinen durch eine Berechnungsvorschrift hergestellt werden; wir sprechen von Pseudozufallszahlen. Darunter versteht man mathematisch wohldefinierte Zahlenfolgen, die als zufällig“ angesehen werden sollen. Es sollen Zahlen erzeugt werden, für die folgende ” Eigenschaften anzusehen sind: Gleichverteilung Die Zufallsfolge genügt der Gleichverteilung. Diese Forderung erläutern wir, wenn wir mehr über den Zufall bereitgestellt haben. Unvorhersagbarkeit Hat man eine Zahl erzeugt, sollte die nächste nicht vorhersagbar sein. Dies bedeutet, dass der Konstruktionsmechanismus komplex genug ist, um zu vermeiden, dass das Konstruktionsprinzip abgelesen werden kann. (Bei Spielen: der Bösewicht soll nicht immer zur selben Zeit auf einer vorhersehbaren Position der Bildfläche erscheinen.) Reproduzierbarkeit Um die Fehlersuche zu erleichtern und verschiedene Simulationen einfacher miteinander vergleichen zu können, ist es wichtig, dass eine einmal erzeugte Zufallsfolge immer wieder reproduziert werden kann. 41 Irreproduzierbarkeit In der Kryptologie steht dem gegenüber die Forderung nach Irreproduzierbarkeit; sie ist dort unverzichtbar“. ” Dazu kommen die Forderungen, dass die erzeugende Rechenvorschrift schnell ist und möglichst wenig Speicherplatz auf dem Computer belegt. Eine erste Realisierung der Pseudozufallserzeugung bestand in der Nutzung der Dezimalziffern transzendenter Zahlen. Die Zahl π wurde 1873 mit 703, 1960 mit 100 000 und 1986 mit 107 Dezimalstellen berechnet. Die statistische Analyse ergab, dass keine signifikanten Abweichungen von der Gleichverteilung auftraten. Da die Erzeugung von transzendenten Zahlen in der Regel sehr kompliziert sind, werden in der Praxis meist andere Erzeugungen benutzt. Einer der ältesten Generatoren ist die MiddleSquare-Methode, die 1940 von von Neumann und Metropolis entwickelt wurde und die wie folgt durchgeführt wird: i 0 1 2 3 ... 12 13 14 ... zi ui := 0.zi 7182 −−− 5811 0.5811 7677 0.7677 9363 0.9363 ... ... 0012 0.0012 0001 0.0001 0000 0.0000 ... ... zi2 51 5811 24 33 7677 21 58 9363 29 87 6657 69 ... 00 0001 44 00 0000 01 00 0000 00 ... Abbildung 3.3: Middle-Square Wähle eine 4-stellige Zahl, quadriere sie, man erhält eine höchstens 8-stellige Zahl. Ist das Ergebnis nicht 8-stellig, füllt man sie links mit Nullen auf 8 Stellen auf. Die mittleren 4 Ziffern wählt man nun als erste Zufallszahl und als neuen Startwert für das Vorgehen. Ist man unvorsichtigt, bekommt man damit eine nicht sehr brauchbare Folge. Etwa erhält man mit dem Startwert 8441: 8441, 2504, 2700, 2900, 4100, 8100, 6100, 2100, 4100, 8100, . . . , d.h. es werden eigentlich nur 6 brauchbare erzeugt. Es ist sogar noch schlimmer“, wie das Bei” spiel in obiger Tabelle (siehe 3.3 ) andeutet. Die ersten Schritte des Middle-square-Algorithmus scheinen brauchbare Zufallszahlen zu liefern, die Fortsetzung bei i = 12 zeigt aber, dass die Iteration bei der Zufallszahl“ Null endet. In der Tat tendiert der Algorithmus in vielen Fällen ” dazu, bei Null zu enden. Also scheint der Algorithmus unbrauchbar zu sein, Zufallszahlen zu erzeugen. Anderenfalls ist das obige kurze Stück 8100, 6100, . . . , 8100 das periodische Stück einer doch recht langen nichtperiodischen Zahlensequenz, die mit dem Startwert 6239 beginnt. Zunächst einige allgemeine Bemerkungen. Sei M eine endliche Menge. Pseudozufallszahlen, deren Konstruktionsmethode wir hier besprechen wollen, ergeben sich als Iterierte einer Vorschrift (im Anschluss an Kapitel 5 sagen wir Funktion) G, die jedem m ∈ M genau ein wohlbestimmtes G(m) zuordnet. In unserem Zusammenhang sagen wir G generiere G(m)“. Damit ” betrachten wir die iterative Generation xn+1 := G(xn ) , n ∈ N0 , (3.4) und nennen die damit entstehende Sequenz x0 , x1 , x2 , . . . eine Pseudozufallsfolge; wir schreiben dafür (xn )n∈N . Der Startwert x0 heißt Samen der Pseudozufallsfolge (xn )n∈N , die Folge selbst heißt auch Orbit und die Vorschrift G heißt Generator. Die Folge ist durch die Wahl von G und x0 vollständig bestimmt. Daher ist es verwunderlich – das Präfix Pseudo“ drückt dies aus – dass die Folge mit dem Zufall verknüpft wird. Durch ” geschickte Wahl von G – gewünscht wird eine gute Durchmischung von M – kann man jedoch 42 erreichen, dass sich die Folge für viele Anwendungen wie eine Zufallsfolge verhält; darauf kommen wir noch zurück. Da die Menge M endlich ist, können nicht alle Folgenglieder xn verschieden sein. Es gibt also Indizes k, l mit xk = xl ; o. E. k > l . Seien k, l die ersten Indizes, für die dies eintritt. Sei damit r := k − l . Da xk = xl gilt, folgt xn+r = xn für alle n ≥ l . Also wird der Orbit (xn )n∈N periodisch mit Periode r ; wir haben einen Zyklus der Länge r . Verlangt man, dass jedes Element der Menge M die Chance hat im Orbit aufzutauchen, muss der Zyklus ganz M umfassen. Daraus folgt, dass die Vorschrift auch wirklich jedes Element generieren können muss. Da M endlich ist, hat G jedes Element sogar auf eindeutig bestimmte Weise zu generieren; im Anschluss an Kapitel 5 sagen wir, G muss eine bijektive Abbildung sein. Wir werden unten sehen, dass diese Forderung keineswegs dafür schon ausreicht, ein guter Generator zu sein. Die Pseudozufallszahlengeneratoren, die wir hier besprechen wollen, sind ausschließlich affine Generatoren; also M := Zm , G([x]) := ([ax] + [b]) , [x] ∈ Zm , (3.5) mit einem Modul m . Hier sind a, b ∈ Z . Warum könnte diese Konstruktionsweise zu guten Zufallszahlen führen? Wir vermuten, dass die modulo-Rechnung Spuren der Erzeugung verschleiert. Wir bezeichnen (3.5) auch als Kongruenz–Generator, denn Rechnen in Kongruenzen ist nichts anderes als das Rechnen in Restklassen, allerdings in einer anderen Schreibweise. Wir führen die zugehörige Schreibweise ein. Mit u, v ∈ Z schreiben wir: u ≡ v mod m : ⇐⇒ [u] = [v] ⇐⇒ m|(u − v) . Damit ergibt sich die Vorschrift für den Kongruenz–Generator so: M := {0, . . . , m − 1} ; G(x) := ax + b mod m , x ∈ M . (3.6) Beispiel 3.5.1 Wir leiten die Neuner-Probe in der Kongruenzschreibweise ab. Offenbar ist 10 ≡ 1 mod 9 , 102 ≡ 12 mod 9 , 10k ≡ 1 mod 9, k ∈ N . Daraus folgt nun a0 + a1 10 + · · · + al 10l ≡ a0 + a1 + · · · + al mod 9 . Dies bedeutet, dass der Neuner-Rest einer natürlichen Zahl gleich ist dem Neuner-Rest ihrer Ziffernsumme in der Dezimaldarstellung. Beispiel 3.5.2 Wie sehen die beiden letzten Dezimalstellen von 242008 aus? Dies ist die Frage nach dem Rest von 242008 modulo 100 . Wir rechnen induktiv nach: 24k ≡ (−1)k+1 · 24 mod 100 , k = 1, 2, . . . . Induktionsbegin k = 1: Klar Induktionsschluss k → k + 1: 24k+1 ≡ (24k · 24) ≡ (−1)k+1 · 24 · 24 ≡ (−1)k+2 · 24 mod 100 Daraus folgt also 242008 ≡ −24 mod 100 ≡ 76 was bedeutet, dass die Zahl 22008 mit 76 endet. 43 mod 100 , Bemerkung 3.5.3 Durch die Generatoren in (3.5) werden Pseodozufallszahlen in M := {0, 1, . . . , m− 1} erzeugt. Aus einer Zufallszahl y ∈ {0, . . . , m − 1} ergibt sich eine rationale Zufallszahl z zwiy schen 0 und 1 ganz einfach so: z := m . Algorithm 2 Kongruenz-Generator nach Lehmer EIN Parameter a, b, m . Startwert x0 ∈ [0, m − 1) . Iterationsanzahl kit ≤ m − 1 . Schritt 1 Für k = 0, . . . , kit − 1 berechne xk+1 := axk + b mod m . AUS Zufallszahlen“ x1 , . . . , xkit . ” Dabei ist der Modul m oft von der Registergröße der Rechenmaschine“. ” Die Qualität der Generatoren hängt ab von der Wahl von a, b, m . Damit die Vorschrift G aus (3.5) jedes Element der Menge Zm erzeugt (siehe oben), muss a ein invertierbares Element in Zm sein, d.h. a muss zu m teilerfremd sein. Dies lesen wir aus dem folgenden Lemma ab. Lemma 3.5.4 Sei x ∈ Z und m ∈ N, m ≥ 2 . Es sind äquivalent: (a) Es gibt x′ ∈ Z mit xx′ ≡ 1 mod m . (b) ggT(x, m) = 1 . Beweis: (a) =⇒ (b) Es gibt q ∈ Z mit 1 = xx′ + mq . Daraus folgt ggT(x, m) = 1 . (b) =⇒ (a) Siehe Folgerung 3.3.10. Aus Lemma 3.5.4 lesen wir nun ab, dass für den Kongruenz-Generator gelten soll, dass a, m teilerfremd sind. Denn nur dann ist die Gleichung [a] · [x] = [y] in Zm eindeutig lösbar. Für die Klärung der Frage, unter welchen Bedingungen ein solcher Generatoren dann einen Zyklus maximaler Länge erzeugt, schauen wir uns Beispiele an. Beispiel 3.5.5 Betrachte die spezielle Wahl m = 10, a = b = 7 . Hier ist der erzeugte Zyklus 7, 6, 9, 0, 7, 6, 9, 0, . . . ziemlich kurz, obwohl natürlich a = 7 ein invertierbares Element in Z10 ist. Beispiel 3.5.6 Betrachte die spezielle Wahl m = 231 , a = 65539, b = 0 . Dies ist der Zufallsgenerator RANDU, wie er von IBM in den Computern in den 60er Jahren verwendet wurde. Die maximal erreichbare Zykluslänge r ist hier nicht ganz maximal, aber mit r = 229 nahezu maximal. Wir kommen später auf die Güte dieses Generators noch zu sprechen. Bemerkung 3.5.7 Die Wahl des Samens (Startwert der Iteration) kann für Anwendungen durchaus kritisch sein. Will man etwa ein Internet-Pockerspiel mit zufälligen Kartenzuordnungen erzeugen, so hat man 2226 verschiedene Möglichkeiten zu bedenken. Ist der Samen aber grundsätzlich nur eine 32-Bit-Zahl, so wird diese Anzahl auf 232 Möglichkeiten reduziert. Die Ermittlung des Samens mittels Synchronisation mit der Server-Uhr etwa schränkt diese Anzahl der Möglichkeiten noch viel drastischer ein. 44 Lemma 3.5.8 Für a ∈ Z und k ∈ N0 setzen wir Sk (a) := 0 , falls k = 0 , Sk (a) := 1 + a + · · · + ak−1 , falls k ≥ 1 . (3.7) Damit gilt (in Z) : Srk (a) := Sr (ak )Sk (a) , r ∈ N . (3.8) Beweis: Dies rechnet man mittels vollständiger Induktion so nach: r = 1 : Srk (a) = Sk (a) = S1 (ak )Sk (a), da S1 (ak ) = 1 ist. r+1: S(r+1)k (a) = Srk+k (a) = Srk (a) + ark + · · · + ark+k−1 = Sr (ak )Sk (a) + ark Sk (a) = Sk (a)(Sr (ak ) + ark ) = Sk (a)Sr+1 (ak ) . Lemma 3.5.9 Sei p eine Primzahl und a eine ganze Zahl mit a = 1 mod p bzw. a = 1 mod 4, falls p = 2 . Dann gilt für alle n, k ∈ N : n n (a) Sp (ap ) ≡ 0 mod p , Sp (ap ) 6≡ 0 mod p2 . (b) (c) Spn (a) ≡ 0 mod pn , Spn (a) 6≡ 0 mod pn+1 . Sk (a) ≡ 0 mod pn ⇐⇒ pn |k . Beweis: Zu a). Wir führen den Beweis nur für p > 2 . Wir haben auf Grund der Voraussetzung a = 1 + jp mit j ∈ Z . Mit der Binomialformel erhält man at − 1 = tjp + cp2 mit einer Konstante c . daher p−1 X 1 n Sp (a ) − p = (akp − 1) = pn jp p(p − 1) + c̃p2 , 2 pn k=0 mit einer weiteren Konstanten c̃ . Daraus liest man die Behauptung ab. Zu b). Wir beweisen die Behauptung durch Induktion nach n . n = 1 . Der Fall p = 2 ist trivial. Sei also p ungerade. Nach Voraussetzung ist a = 1 + jp mit einer ganzen Zahl j , also ak ≡ 1 + kjp mod p2 , k ∈ N . Dann ist Sp (a) − p ≡ p−1 p−1 X X p(p − 1) ≡ 0 mod p2 . (ak − 1) ≡ kjp ≡ jp 2 k=0 k=0 Damit ist der Induktionsbeginn schon klar. n + 1 . Der Induktionsschluss ergibt sich aus der Formel n Spn+1 (a) = Sp (ap )Spn (a) , die sich aus (3.8) ergibt, und a). Zu c). Sei pm die höchste Potenz von p mit pm |k, also k = pm l mit p 6 | l . Nach (3.8) ist m Sk (a) = Sl (ap )Spm (a) . 45 m m Es gilt Sl (ap ) ≡ l mod p , Sl (ap ) 6≡ 0 mod p ; dies verifiziert man wie oben. Daraus schließt man pn |Sk (a) ⇐⇒ pn |Spm (a) , und mit Lemma 3.5.9 pn |Sk (a) ⇐⇒ n ≤ m d.h. pn |Sk (a) ⇐⇒ pn |k ; beachte dabei a). Zum Beweis des Hauptergebnisses über lineare Kongruenz–Pseudozufallsgeneratoren ziehen ein wichtiges Resultat für das Rechnen in Kongruenzen heran, das man oft zur Vereinfachung von Argumentationen verwenden kann, den Chinesischen Restsatz. Wir führen ihn erst in Kapitel über Abbildungen an. Satz 3.5.10 Mit m, a, b ∈ Z, m ≥ 2 betrachte den Zufallsgenerator G(x) := ax + b mod m , x ∈ {0, . . . , m − 1} . (3.9) Für beliebiges x0 ∈ {0, . . . , m − 1} sei die Folge (xn )n∈N definiert durch xn+1 := G(xn ) , n ∈ N 0 . Genau dann ist diese Folge periodisch mit der maximalen Periodenlänge m, wenn folgende Bedingungen erfüllt sind: a) p|(a − 1) für alle Primteiler p von m ; b) 4|(a − 1) falls 4|m ; c) b und m sind teilerfremd. Beweis: Ist m = pk11 ·· · · ·pkr r die Primfaktorzerlegung von m, so hat man nach dem chinesischen Restsatz, dass Zm isomorph zu Zpk1 × · · · × Zpkr r vermöge der Abbildung g in Satz 5.6.1mit den Eigen1 schaften aus (5.11) ist. Es ist daher leicht einzusehen, dass es genügt, den Satz für den Fall zu beweisen, dass m eine Primzahlpotenz pk ist. Vorüberlegung: Es gilt xi+1 − xi = f (xi ) − f (xi−1 ) = a(xi − xi−1 ) , i = 1, 2, . . . , und daher xn − x0 = n−1 X i=0 ai (x1 − x0 ) = Sn (a)(x1 − x0 ) , xn − x0 ≡ Sn (a)(x1 − x0 ) mod m , n ∈ N . (3.10) Wir zeigen nun die Notwendigkeit der Bedingungen. Es sei also vorausgesetzt, dass G einen Zyklus der maximalen Länge m erzeugt. Beachte: m = pk . Falls p nicht a − 1 teilt, sind m, a − 1 teilerfremd und die Gleichung (a − 1)x = b ist in Zm lösbar, d.h. G besitzt einen Fixpunkt. Dann kann aber kein Zyklus der Länge m existieren. a) ist damit gezeigt. Es teile 4 die Zahl m, also m = 2k mit k ≥ 2 . Nach a) wissen wir schon, dass 2|(a − 1) gilt; a ist also ungerade. Es muß also noch gezeigt werden, dass der Fall a = 3 mod 4 nicht auftreten kann. Wäre dies doch der Fall, so würde S2 (a) = 1 + a = 0 mod 4 sein und daher mit S2i (a) = Si (a2 )S2 (a) (siehe Lemma 3.5.9) schließlich S2i (a) = 0 mod 4 für alle i gelten. Mit (3.10) folgt daraus x2i = x0 mod 4 und x2i+1 ≡ x1 mod 4 für alle i ; es könnte also keinen Zyklus 46 a 24298 65539 137 193 75 131 16333 3432 1711 b 99991 0 187 73 0 0 25887 6789 0 m 199017 231 216 216 231 − 1 235 215 9973 30269 Periode nicht maximal maximal maximal maximal maximal maximal ??? ??? Quelle Texas Instruments (TI-59) RANDU Knuth Park-Miller Neave Oakenfull Oakenfull Wichman-Hill Abbildung 3.4: Gebräuchliche Generatoren maximaler Länge m geben. b) ist damit gezeigt. In einem Zyklus der Länge m muß insbesondere das Element 0 vorkommen; wir dürfen daher o. E. x0 = 0 und daher x1 = b voraussetzen. Dann sagt (3.10), dass xn = Sn (a)b gilt. Ist b nicht invertierbar mod m, kann das Element 1 niemals im Zyklus auftreten. Damit ist auch c) klar. Wir zeigen nun die Hinlänglichkeit der angeführten Bedingungen. Beachte m = pk . Ist m = 2, dann ist b = 1 wegen c) und ein Zyklus der Länge 2 existiert. Im Fall p = 2 dürfen wir also 4|m annehmen und die Voraussetzungen von Lemma 3.5.9 sind erfüllt. Es genügt zu zeigen, dass für x0 = 0 ein Zyklus der Länge m erzeugt wird. Aus x0 = 0 folgt mit (3.10), dass xn ≡ Sn (a)b mod m gilt. Da b invertierbar modulo m ist, ist dann xn = x0 = 0 gleichbedeutend mit Sn (a) ≡ 0 mod m . Aus Lemma 3.5.9 c) folgt m|n und damit die Behauptung. Satz 3.5.10 nennt uns die Bedingungen für einen affinen Kongruenz–Generator, damit er der Minimalforderung, einen Zyklus maximaler Länge zu erzeugen, genügt. Jedoch garantieren diese Bedingungen noch lange keinen guten Zufallsgenerator, wie nachfolgendes Beispiel zeigt. Beispiel 3.5.11 Betrachte für einen beliebigen Modul m den Generator G(x) := x + 1 mod m . Kein Zweifel, die Zykluslänge ist maximal, nämlich m, aber die erzeugte Folge 0, 1, 2, . . . , m − 1, 0, 1 . . . kann sicherlich nicht den Anspruch einer Zufallsfolge erheben. Damit die Abbildung f aus (3.9) bijektiv wird, muss a zu m teilerfremd sein. Als Vorbereitung auf die Frage, unter welchen Bedingungen dieser Typ von Generatoren einen Zyklus maximaler Länge erzeugt, schauen wir uns Beispiele an. Beispiel 3.5.12 Betrachte die spezielle Wahl m = 10, a = b = 7 . Hier ist der erzeugte Zyklus 7, 6, 9, 0, 7, 6, 9, 0, . . . ziemlich kurz, obwohl natürlich a = 7 zu m teilerfremd, d.h. a ein invertierbares Element in Z10 ist. In der Praxis wird häufig ein Modul der Form m = 2k verwendet (und dazu in der Regel der √ √ Multiplikator a im Bereich m < a < m − m). In diesem Fall bedeuten die Bedingungen des Satzes 3.5.10 einfach a ≡ 1 mod 4 und b ungerade . (3.11) Im Beispiel 3.5.6 sind diese Bedingungen offenbar verletzt (a = 216 + 3 und b = 0) und Konsequenz ist ein verkürzter maximaler Zyklus. 47 Beispiel 3.5.13 In der Programmiersprache C++ gibt es einen Generator namens drand48: Modul = 248 , a = 25214903917 , b = 11 . Die Zykluslänge ist maximal, da die Bedingungen (3.11) erfült sind. Beispiel 3.5.14 Von D. Knuth wurde der Generator Modul = 216 , a = 137 , b = 187 vorgeschlagen. Die Zykluslänge ist maximal, da die Bedingungen (3.11) erfüllt sind. Beispiel 3.5.15 Ein weiterer Generator: Modul = 216 , a = 193 , b = 73 . Die Zykluslänge ist maximal, da die Bedingungen (3.11) erfüllt sind. Wie soll man nun gute und weniger gute Generatoren auseinanderhalten? Es liegt nahe, Paare, Trippel,. . . von Zufallszahlen zu betrachten und deren geometrische Verteilung zu untersuchen. Wir skalieren“ dazu die Zufallszahlen mit Modul m gemäß ” X i := xi ∈ [0, 1] , i ∈ N0 . m Vergleichen wir die geometrische Verteilung der Paare (X i+1 , X i ) in [0, 1] × [0, 1] für die Generatoren aus Beispiel 3.5.14 und Beispiel 3.5.15. Man kann Geraden entdecken, worauf alle Zufallszahlen liegen, 21 im ersten Fall, 8 im zweiten Fall; die Streifen dazwischen sind frei von den erzeugten Zufallspaaren. Der maximale Abstand von solchen Streifen ist bei beiden Gene1 bei Beispiel 3.5.14, √132 bei Beispiel 3.5.15. ratoren dementsprechend ziemlich verschieden: √274 Dies bedeutet, dass der Generator 3.5.14 größeres Vertrauen genießen sollte. Betrachtet man für den Generator 3.5.6 Tripel (X i+2 , X i+1 , X i ) in [0, 1] × [0, 1] × [0, 1], so stellt 1 haben. man fest, dass diese Tripel auf genau 15 Ebenen liegen, die jeweils einen Abstand √118 Neben der mangelnden Maximalität der Zykluslänge ein weiterer Nachteil dieses Generators. 3.6 Quantoren Wir führen noch Quantoren ein. Damit können wir dann viele Resultate und Definitionen noch kompakter hinschreiben. Wir werden viele Beispiele für die Nützlichkeit dieser Quantoren kennenlernen. Notation Sprechweise ∀a ∈ A “für alle Elemente a in A“ ∃1 a ∈ A “es existiert genau ein a in A“ ∃a ∈ A “es existiert a in A“ ∀ a ∈ A (P (a)) “für alle Elemente a in A ist P (a) wahr“ ∀ a ∈ A (P (a)) “für alle Elemente a in A gilt P (a)“ 48 3.7 Übungen 1.) Berechne ggT(2406, 654) . 2.) Berechne d := ggT(721, 448) und finde Zahlen x, y ∈ Z mit d = 721x + 448y . 3.) Zeige: Ist ggT(a, b) = d , so gilt ggT( ad , db ) = 1 . 4.) Finde Zahlen x, y ∈ Z mit 966x + 686y = 70y . 5.) Seien a, b ∈ Z mit ggT(a, b) 6= 0 . Definiere k := ab . ggT(a, b) Zeige: (a) a|k , b|k . (b) Wenn m ∈ N ist mit a|m und b|m, dann gilt k|m . 6.) Die Zahlen a = 77 708 431 b = 2 640 858 beschreiben das Verhältnis der Winkel beim Umlauf um die Sonne der Erde und des Saturn von der Sonne aus gesehen. Huygens wählte dafür den Näherungsbruch 206 7 , denn ein Modell für den Umlauf dieser Planeten um die Sonne aus Zahnrädern mit 77 708 431 bzw. 2 640 858 Zähnen herzustellen, war für Mechaniker nicht möglich. Dieser Näherungswert ergibt sich, wenn man den Kettenbruch“ ” a = 29 + [x, y, z, . . . ] b geeignet abbricht. (a) Berechne x, y, z in der obigen Darstellung. 7.) (b) Wie ergibt sich damit der Näherungswert 206 7 ? Bestimme ganze Zahlen x, y, z mit 252x + 420y + 315z = 42 . 8.) Sei die Folge (un )n∈N definiert durch u1 := 2 , un+1 := u2n − un + 1 (n ∈ N) Finde die kleinste natürliche Zahl n, so dass un keine Primzahl ist. Ist u6 eine Primzahl? 9.) Betrachte die Zahlen H := {3j + 1|j ∈ N} ⊂ N . (a) Bestimme in dieser Menge in ein Produkt zerlegbare Elemente und nicht in ein Produkt zerlegbare Elemente ( Primzahlen“ in H). ” (b) Bestimme in dieser Menge eine Art Primfaktorzerlegung von 100. Ist diese eindeutig bestimmt? 10.) Was läßt sich über die Güte eines affinen Zufallsgenerators mit m = 231 , a = 75 , b = 0 sagen? 11.) Überprüfe, ob der affine Generator xi+1 := axi + b mod m mit a = 1711, b = 0, m = 30269 eine maximale Periode hat. 49 12.) Betrachte einen linearen Kongruenz-Generator mit den Daten a = 3 141 592 621 , b = 2 718 281 829 , m = 10 000 000 000 . (a) Berechne zum Startwert x0 := 5 772 156 648 die nächste Zahl x1 . (b) Ist die Periodenlänge dieses Generators maximal? 13.) Betrachte einen affinen Generator xi+1 := axi + b mod m . Sei m1 ein Teiler von m . (a) Setze y i := xi mod m1 , i ∈ N . Zeige: y i+1 = ay i + b mod m1 . (b) Was lässt sich mit Hilfe von a) aus Satz 3.5.10 zur Periode des Generators schließen? 14.) Seien Zufallszahlen xi mit dem affinen Kongruenz Generator mit a = 2, b = 0, m = 11 erzeugt. Setze ui := xi /m . Auf wie vielen Geraden in Q × Q liegen die Tupel (ui , ui+1 )? 15.) Seien Zufallszahlen xi mit dem affinen Kongruenz Generator mit a = 1229, b = 1, m = 2048 erzeugt. Setze ui := xi /m . Auf wie vielen Geraden in Q × Q liegen die Tupel (ui , ui+1 )? 16.) Betrachte die folgende Variante eines Fibonacci-Generators: n xi+1 := xi−17 − xi−5 falls xi−17 − xi−5 ≥ 0 xi−17 − xi−5 + 1 , sonst . Dabei sind x0 , . . . , x17 in [0, 1] zufällig“ vorgegeben. ” Implementiere diesen Generator und plotte 10 000 Paare (xi , xi−1 ) in [0, 1]2 . 50