Kapitel 2: Grundwissen über Zahlen 2.1 2.2 2.3 2.4 Vollständige Induktion Primfaktorzerlegung Darstellungen ganzer Zahlen Der Euklidische Algorithmus Prinzip der vollständigen Induktion — (Satz 2.1.4) Für jedes n aus N sei P (n) eine Aussage. Angenommen, man kann die beiden folgenden Eigenschaften nachweisen: 1. Induktionsverankerung: Es ist P (n0 ) = wahr (für ein n0 ∈ N). 2. Induktionsschritt: Ist m ≥ n0 (beliebig) und P (m) = wahr, so folgt P (m+1) = wahr. Dann ist P (n) = wahr für alle n ≥ n0 . Beispiel 2.1.9 m m! 7m 1 1 7 2 2 49 3 6 343 4 24 2401 5 120 16807 6 720 117649 7 5040 823543 8 40320 5764801 9 362880 40353607 10 3628800 282475249 18! = 6402373705728000 > 1628413597910449 = 718 , 18! = = = > = = 216 · 38 · 53 · 72 · 11 · 13 · 17 (215 ) · (94 · 5) · (2 · 52 ) · (72 ) · (11 · 13 · 17) (85 ) · 32805 · 50 · (72 ) · 2431 (75 ) · 16807 · (72 ) · (72 ) · 2401 (75 ) · (75 ) · (72 ) · (72 ) · (74 ) 718 . Prinzip der vollständigen Induktion, zweite Form — (Satz 2.2.4) Für jedes n aus N sei Q(n) eine Aussage. Angenommen, man kann die beiden folgenden Eigenschaften nachweisen: 1. Induktionsverankerung: Es ist Q(0) = wahr. 2. Induktionsschritt: Ist Q(k) = wahr für alle k ≤ m, so folgt Q(m + 1) = wahr. Dann ist Q(n) = wahr für alle n ∈ N. Beispiel zur Primfaktorzerlegung 32! = 1 · 2 · 3 · 4 · 5 · 6 · 7 · 8 · 9 · 10 · 11 · 12· 13 · 14 · 15 · 16 · 17 · 18 · 19 · 20 · 21 · 22· 23 · 24 · 25 · 26 · 27 · 28 · 29 · 30 · 31 · 32 = 2 · 3 · (2 · 2) · 5 · (2 · 3) · 7 · (2 · 2 · 2) · (3 · 3) · (2 · 5)· 11 · (2 · 2 · 3) · 13 · (2 · 7) · (3 · 5) · (2 · 2 · 2 · 2)· 17 · (2 · 3 · 3) · 19 · (2 · 2 · 5) · (3 · 7) · (2 · 11) 23 · (2 · 2 · 2 · 3) · (5 · 5) · (2 · 13) · (3 · 3 · 3)· (2 · 2 · 7) · 29 · (2 · 3 · 5) · 31 · (2 · 2 · 2 · 2 · 2) = (2 · 2 · 2 · 2 · 2 · 2 · 2 · 2 · 2 · 2 · 2 · 2 · 2 · 2 · 2 · 2· 2 · 2 · 2 · 2 · 2 · 2 · 2 · 2 · 2 · 2 · 2 · 2 · 2 · 2 · 2)· (3 · 3 · 3 · 3 · 3 · 3 · 3 · 3 · 3 · 3 · 3 · 3 · 3 · 3) (5 · 5 · 5 · 5 · 5 · 5 · 5) · (7 · 7 · 7 · 7)· (11 · 11) · (13 · 13) · 17 · 19 · 23 · 29 · 31 = 231 · 314 · 57 · 74 · 112 · 132 · 17 · 19 · 23 · 29 · 31 in Bezug auf Satz 2.2.9 ist mit n = 32! dann m = 65 p1 = p2 = ... = p31 = 2 p32 = ... = p45 = 3 p46 = ... = p52 = 5 p53 = ... = p56 = 7 p57 = p58 = 11 p59 = p60 = 13 p61 = 17 p62 = 19 p63 = 23 p64 = 29 p65 = 31 in Bezug auf Satz 2.2.10 ist mit n = 32! dann t = 11 q1 = 2 q2 = 3 q3 = 5 q4 = 7 q5 = 11 q6 = 13 q7 = 17 q8 = 19 q9 = 23 q10 = 29 q11 = 31 a1 = 31 a2 = 14 a3 = 7 a4 = 4 a5 = 2 a6 = 2 a7 = 1 a8 = 1 a9 = 1 a10 = 1 a11 = 1 Naives Faktorisierungsverfahren Proposition 2.2.11 Ist K ∈ N∗ √ keine Primzahl, so gibt es einen Primteiler p von K mit p ≤ ⌈ K⌉. Beispiel. Wollen N = 3138428376720 faktorisieren. Liste P100 aller Primzahlen p ≤ 100: P100 = { 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97 }. Test auf Teilbarkeit von N liefert N = 24 · 32 · 5 · 7 · 13 · 19 · 37 · 61 · 1117. √ Es ist 1117 Primzahl, sonst hätte sie Primteiler p ≤ ⌈ 1117⌉ = 35. Beispiel. Will man mit diesem Verfahren zeigen, dass 4107187258297 eine Primzahl ist, so muss man alle Primzahlen p mit √ p ≤ ⌈ 4107187258297⌉ = 2026620 dahingehend testen, ob sie 4107187258297 teilen. Immerhin gibt es genau 150776 solche Primzahlen p. B-adische Darstellung — (Algorithmus 2.3.5) • Eingabe: ein a ∈ N∗ ; • Ausgabe: eine Liste L = [αm , αm−1 , ..., α0 ] mit αi ∈ {0, 1, ..., B −P1} für alle i und i αm > 0 und a = m i=0 αi B ; • L := [ ], (∗ L ist zunächst die leere Liste ∗) x := a, k := −1, P (∗ a = xB k+1 + ki=0 αi B i ∗) while not(x = 0) do k := k + 1, αk := x mod B, füge αk zum Anfang der Liste L hinzu, y := x div B, x := y P (∗ a = xB k+1 + ki=0 αi B i ∗) end-do, gib die Liste L aus. Euklidischer Algorithmus — (Algorithmus 2.4.4) • Eingabe: a, b ∈ N; • Ausgabe: d = ggT(a, b); • s := a, t := b, (∗ ggT(a, b) = ggT(s, t) ∗) while t 6= 0 do r := s mod t, s := t, t := r (∗ ggT(a, b) = ggT(s, t) ∗) end-do, (∗ ggT(a, b) = ggT(s, t), t = 0 ∗) d := s, (∗ d = ggT(a, b) ∗) Ausgabe von d. Beispiel. a = 15027133, b = 8562227 ergibt ggT(a, b) = 163. s t 15027133 8562227 8562227 6464906 6464906 2097321 2097321 172943 172943 22005 22005 18908 18908 3097 3097 326 326 163 163 0 Erweiterter Euklidischer Algorithmus — (Algorithmus 2.4.6) • Eingabe: a, b ∈ N; • Ausgabe: d = ggT(a, b) und x, y ∈ Z mit xa + yb = d; • s := a, t := b, x := 1, y := 0, u := 0, v := 1, (∗ xa + yb = s, ua + vb = t ∗) while t 6= 0 do q := s div t, ρ := s − qt, (∗ ρ = s mod t ∗) ξ := x − qu, η := y − qv, s := t, t := ρ, x := u, y := v, u := ξ, v := η (∗ xa + yb = s, ua + vb = t ∗) end-do, (∗ s = xa + yb, ua + vb = t, t = 0, s = ggT(a, b) ∗) d := s, Ausgabe von x, y, d. nützliche Update-Formeln: uneu vneu xneu yneu := := := := xalt − qneu ualt , yalt − qneu valt , ualt , valt .