1 ETWAS ZU DEN GANZEN UND NATÜRLICHEN ZAHLEN 1 1.1 1 Etwas zu den ganzen und natürlichen Zahlen Grundlegendes Die Menge der natürlichen Zahlen bezeichnen wir mit dem Buchstaben N und meinen damit die Menge N = {0, 1, 2, ...}. Eine formale Definition der Menge der natürlichen Zahlen liefern die Peano Axiome (worauf wir hier nicht eingehen wollen). Die Menge der ganzen Zahlen Z umfasst alle natürlichen Zahlen N sowie die Negativen aller natürlichen Zahlen {−1, −2, ...}. (Da 0 gleich −0 ist, wird 0 daher nicht separat genannt.) Die ganzen Zahlen bilden einen Ring bzgl. der Addition und der Multiplikation, d. h. sie können ohne Einschränkung addiert, subtrahiert und multipliziert werden. Dabei gelten Rechenregeln wie das Kommutativgesetz und das Assoziativgesetz für Addition und Multiplikation, außerdem gelten die Distributivgesetze. Das neutrale Element bzgl. der Addition ist die 0 und bzgl. der Multiplikation die 1. Das additiv inverse Element einer ganzen Zahl a ist −a. Die Menge der ganzen Zahlen ist total geordnet in der Reihenfolge ... < −2 < −1 < 0 < 1 < 2 < ... d.h. man kann je zwei ganze Zahlen vergleichen. Für zwei ganze Zahlen a und b gilt also genau eine der folgenden Beziehungen: a < b, a = b, b < a. Ist c eine weitere ganze Zahl, dann folgt aus a < b und b < c stets a < c. Man schreibt a ≤ b, wenn a = b oder a < b ist. Diese Ordnung ist verträglich mit den Rechenoperationen, d.h. aus a < b und c ≤ d folgt a + c < b + d und aus a < b und 0 < c folgt a · c < b · c Sei n ∈ N. Die n-te Potenz an einer ganzen Zahl ist rekursiv definiert: a0 := 1, an+1 := a · an . Definition 1.1 Sei s eine beliebige reele Zahl. Dann sei bsc := max{a ∈ Z|a ≤ s} dse := min{a ∈ Z|s ≤ a} {s} := s − bsc Lemma 1.2 Seien a, b ∈ Z mit b 6= 0. Dann gibt es eindeutig bestimmte q, r ∈ Z mit 0 ≤ r < |b|, so dass a = b · q + r gilt. Mit den Bezeichnungen aus dem letzten Lemma heißt r der Rest von a bei der Division durch b 1 ETWAS ZU DEN GANZEN UND NATÜRLICHEN ZAHLEN 1.2 2 Darstellung natürlicher und ganzer Zahlen Natürliche Zahlen werden in der b-adischen Darstellung (b ∈ N, 2 ≤ b) durch eine endliche Folge a0 , a1 , ..., an von Ziffern dargestellt, wobei die Werte aller Ziffern ai kleiner als b sind und der Wert von an ungleich 0 ist, falls 0 < n. Jedes ai steht also für eine Ziffer. Üblicherweise notiert man die Folge aber so: an a1 ...a0 Man ordnet dieser Folge die Zahl n X ai · b i i=0 zu. Satz 1.3 Seien b, k ∈ N mit 2 ≤ b. Dann existieren eindeutige n, a0 , a1 , ...an ∈ N mit 0 ≤ ai < b für 0 ≤ i ≤ n, so dass gilt: k= n X ai · b i i=0 Man spricht von der Binär-, Dezimal- bzw. Hexadezimaldarsstellung wenn b = 2, b = 10 bzw b = 16 ist. Bei der Hexadezimaldarstellung hat man die Ziffern 0 bis 9. Hinzu kommen die Buchstaben A, B, C, D, E, F die für die Zahlen 10, 11, 12, 13, 14, 15 stehen. Man schreibt für beliebiges 2 ≤ b ∈ N: k = (an an−1 ...a0 )b . und sagt k hat n + 1 Stellen in der b - adischen Darstellung. Lemma 1.4 Es gelte die Notation wie im letzten Satz. Dann ist n = blogb (k)c = b ln(k) c ln(b) Satz 1.5 Die Anzahl der benötigten Bits zur Darstellung einer ganzen Zahl k im Computer ist höchstens blog2 (|k|)c + 2. 1.3 Aufwandsabschätzungen Definition 1.6 Sei M eine Teilmenge eines normierten Raums und g : M −→ R eine Abbildung. Dann ist O(g(x)) := {f : M −→ R | ∃ 0 < c ∃ y0 ∈ M ∀ y ∈ M , ||y0 || < ||y|| : |f (y)| ≤ c · |g(y)|}. 1 ETWAS ZU DEN GANZEN UND NATÜRLICHEN ZAHLEN 3 Vorsicht: Üblicherweise wird in der Mathematik bei der O-Notation das Gleichheitszeichen verwendet, d.h. man schreibt f (x) = O(g(x)) falls f (x) ∈ O(g(x)) ist. In dieser Volesung wird ebenso verfahren. Es handelt sich dabei aber um eine rein symbolische Schreibweise und nicht um eine Gleichheitsaussage. So folgt z.B. aus f (x) = O(g1 (x)) und f (x) = O(g2 (x)) nicht, dass O(g1 (x)) und O(g2 (x)) als Mengen gleich sind. Es gilt dann entweder O(g1 (x)) ⊆ O(g2 (x)) oder O(g2 (x)) ⊆ O(g1 (x)). O(1) : konstanter Aufwand O(log(n)) : logarithmischer Aufwand O(n) : linearer Aufwand O(n · log(n)) : quasilinearer Aufwand O(n2 ) : quadratischer Aufwand O(2n ) : exponentieller Aufwand p Beispiele: log(n) ∈ O( (n)) Satz 1.7 Seien a, b ∈ N mit 0 6= b < a. Für die Addition und die Subtraktion von a und b benötigt man O(log(max(a, b))) = O(log(a)), für die Multiplikation und die Division mit Rest O(log(a) · log(b)) viele elementare (binäre) Operationen. Potenzieren Seien k, l ∈ N. Durch l − 1 - fache wiederholte Multiplikation mit k ist es möglich sukzessive k 2 , k 3 , ..., k l zu berechnen. Dies ist jedoch nicht die optimale Methode zur Berechnung der Potenz einer Zahl k zu dem Exponenten l. Eine vom Rechenaufwand her deutlich günstigere Methode ist die folgende: P Man schreibt l in der binären Darstellung l = ni=0 ai · 2i = (an an−1 ...a0 )2 , aj ∈ {0, 1}, j j = 0, ..., n − 1, an = 1. Dann bildet man sukzessive die n Potenzen k 2 , j = 1, ...n j durch wiederholtes Quadrieren. Am Ende multipliziert man alle die Potenzen k 2 zusammen, für die aj 6= 0 ist. Dies kann man auch vom Speicherplatzbedarf noch verbessern. Dazu folgender Algorithmus: Dann berechnet man k l = k (an an−1 ...a2 a1 a0 )2 durch folgende Schritte, k = k (1)2 = k (an )2 quadrieren 7→ quadrieren 7→ quadrieren 7→ k (an 0)2 multiplizieren mit kan−1 k (an an−1 0)2 7→ k (an an−1 )2 multiplizieren mit kan−2 k (an an−1 an−2 0)2 7→ k (an an−1 an−2 )2 multiplizieren mit kan−3 7→ k (an an−1 an−2 an−3 )2 ... quadrieren 7→ k (an an−1 ...a1 0)2 multiplizieren mit ka0 7→ k (an an−1 ...a0 )2 = k l .