Matematyka Dyskretna Andrzej Szepietowski 25 marca 2004 roku
Rozdział 1 Teoria liczb 1.1 Dzielenie całkowitoliczbowe Zacznijmy od przypomnienia szkolnego algorytmu dzielenia liczb naturalnych. Podzielmy 174 przez 12. 1 4 1 7 4 : 1 2 1 2 5 4 4 8 6 W wyniku dzielenia otrzymaliśmy iloraz 14 i resztę 6. Liczby te spełniają równanie 174 = 14 12 + 6 i reszta jest mniejsza od dzielnika. Podobnie możemy postąpić dla dowolnych liczb naturalnych a i b pod warunkiem, że b 0. Twierdzenie 1.1 Dla dowolnych liczb naturalnych a oraz b > 0 istnieje dokładnie jedna para liczb naturalnych q i r spełniających warunki: a = bq + r 0 r < b q nazywa się ilorazem całkowitoliczbowym a przez b, a r nazywa się reszta z dzielenia Zauważmy, że iloraz q jest zaokrągleniem w dół normalnego ilorazu q = a b. Iloraz całkowitoliczbowy liczb a i b będziemy oznaczać przez a resztę przez a b lub a div b. a mod b. 3
4 Rozdział 1. Teoria liczb Przykład 1.2 22 4 = 5 oraz 22 mod 4 = 2, ponieważ 22 = 5 4 + 2 oraz 0 2 < 4. Powyższe definicje zakładały, że a i b są naturalne. W przypadku, gdy a i b są liczbami całkowitymi, iloraz i różnice można róznie definiować. Na przykład w języku Pascal iloraz dwóch liczb typu całkowitego oznacza się przez a div b i jest to a b zaokrąglenie ilorazu a b w dół, gdy a b jest dodatnie i a b, zaokrąglenie ilorazu a b w górę, gdy a b jest ujemne. Reszta, którą oznacza się przez a mod b, jest określona wzorem: Mamy więc, na przykład: a mod b = a-(a div b)*b. 22 div 4 = 5; (-22)div 4 = -5; 22 div(-4)= -5; (-22)div(-4)= 5; 22 mod 4 = 2; (-22)mod 4 = -2; 22 mod(-4)= 2; (-22)mod(-4)= -2. 1.2 Podzielność liczb Mówimy, że liczba całkowita a 0 dzieli liczbę całkowitą b, jeżeli istnieje liczba całkowita z, taka że: b = az. Będziemy to oznaczać przez a b. Zauważmy, że zachodzi wtedy: Liczbę a nazywamy dzielnikiem liczby b. Przykład 1.3 3 6, 3 6 oraz 3 0. b mod a = 0. Lemat 1.4 Jeżeli a b oraz a c, to a (b + c) oraz a (b c) Dowód. Jeżeli a b i a c, to istnieją dwie liczby całkowite k i m, takie że: b = ak oraz c = am. Mamy więc: oraz b + c = ak + am = a(k + m) b c = ak am = a(k m) czyli a dzieli b + c oraz b c.
1.3 Relacja kongruencji 1.3. Relacja kongruencji 5 Niech m będzie dowolną liczbą naturalną m 0. Powiemy, że dwie liczby całkowite a i b są równoważne (lub przystaja) modulo m, jeżeli m (a b). Będziemy wtedy pisać: a = b (mod m). Przykład 1.5 1 = 4 (mod 3), 3 = 0 (mod 3), 1 = 2 (mod 3), 1 = 7 (mod 3). Jeżeli a i b są dodatnie, to a = b same reszty z dzielenia przez m. (mod m) wtedy i tylko wtedy, gdy a i b mają takie Lemat 1.6 Relacja przystawania modulo jest relacja równoważności, czyli spełnia następujace trzy warunki: zwrotność, dla każdego a zachodzi a = a (mod m), symetrię, dla każdego a i b, jeżeli a = b (mod m), to b = a (mod m), przechodniość, dla każdego a, b i c, jeżeli a = b (mod m) i b = c (mod m), to a = c (mod m). Dowód. Udowodnimy tylko przechodniość relacji. Jeżeli m (a b) oraz m (b c), to m ((a b) + (b c)), czyli m (a c). Ponadto relacja modulo jest zgodna z dodawaniem, odejmowaniem i mnożeniem. Twierdzenie 1.7 Jeżeli a = b (mod m) oraz c = d (mod m), to: a + c = b + d (mod m), a c = b d (mod m), ac = bd (mod m). Dowód. Z założenia mamy: z tego zaś łatwo wynika, że m dzieli: m (a b) oraz m (c d), (a + c) (b + d), (a c) (b d) oraz ac bd = a(c d) + d(a b), czyli zachodzi teza twierdzenia. Przykład 1.8 Twierdzenie 1.7 może być użyte do obliczania reszty z dzielenia Jeżeli chcemy policzyć na przykład 1999 mod 3,
6 Rozdział 1. Teoria liczb to pytamy, która z trzech liczb {0, 1, 2} przystaje do 1999 modulo 3. Zróbmy najpierw kilka prostych obserwacji. Po pierwsze: 10 = 1 (mod 3), bo 3 (10 1). Z twierdzenia 1.7 wynika, że każda potęga liczby dziesięć przystaje do 1 modulo 3, czyli: 10 k = 1 (mod 3) dla każdego k. Mamy teraz: 1999 = 1000 + 9 100 + 9 10 + 9 = 1 + 9 + 9 + 9 = 1 (mod 3). Podobnie, dla dowolnej liczby x, jeżeli zapiszemy x w postaci dziesiętnej: to x = d i 10 i, x = d i (mod 3), czyli x ma takie same reszty modulo 3 co suma cyfr w zapisie dziesiętnym. Przykład 1.9 Aby przekonać się, że 2002 1999 4001999 wystarczy zauważyć, że liczba 2002 jest parzysta, więc także wynik mnożenia powinien byż parzysty. Mówiac inaczej 2002 = 0 (mod 2), więc na podstawie twierdzenia 1.7 mamy 2002 1999 = 0 (mod 2), a liczba 4001999 przystaje do jedynki modulo 2. Podobnie możemy się przekonać, że 2002 1999 4001996 wystarczy zauważyć, że w iloczynie 2002 1999 ostatnia cyfra powinno być 8 a nie 6. Inaczej 2002 = 2 (mod 10) oraz 1999 = 9 (mod 10), więc na podstawie twierdzenia 1.7 mamy 2002 1999 = 8 (mod 10), a liczba 4001996 przystaje do 6 modulo 10. 1.4 Klasy abstrakcji Dla relacji przystawania modulo m definiujemy klasy abstrakcji. Dla dowolnej liczby całkowitej x, klasę abstrakcji elementu x definiujemy w następujący sposób: [x] = {y y = x (mod m)}. Innymi słowy, klasa abstrakcji liczby x to zbiór wszystkich liczb z nią równoważnych. Przykład 1.10 Dla m = 3 mamy trzy klasy abstrakcji
1.5. Pierścień Z m 7 [0] = {3k k Z} = {..., 9, 6, 3, 0, 3, 6, 9,...} [1] = {3k + 1 k Z} = {..., 8, 5, 2, 1, 4, 7, 10,...} [2] = {3k + 2 k Z} = {..., 7, 4, 1, 2, 5, 8, 11,...} Zauważmy, że klasy abstrakcji elementów równoważnych pokrywają się. Lemat 1.11 Jeżeli x = y (mod m), to [x] = [y]. Dowód. Jeżeli z [x], to i z przechodniości relacji mamy z = x (mod m) z = y (mod m), czyli z [y], a więc pokazaliśmy, że: [x] [y]. Identycznie pokazujemy zawieranie odwrotne [y] [x]. Następna ważna własność klas abstrakcji to ich rozłączność. Lemat 1.12 Jeżeli [x] [y], to [x] = [y], inaczej, dwie klasy abstrakcji [x] i [y] albo sa identyczne, albo sa rozłaczne. Dowód. Przypuśćmy, że klasy [x] i [y] mają wspólny element z. Wtedy: Z przechodniości mamy wtedy z = x (mod m) oraz z = y (mod m). x = y (mod m), a z lematu 1.11 [x] = [y]. 1.5 Pierścień Z m Klasy abstrakcji relacji modulo m wyglądają następująco: [0], [1],..., [m 1]. Dla dowolnego k z przedziału 0 k m 1, klasa [k] jest postaci: [k] = {jm + k j Z}
8 Rozdział 1. Teoria liczb (Z oznacza zbiór liczb całkowitych). Zbiór klas abstrakcji modulo m oznacza się przez Z m. Ponieważ relacja modulo jest zgodna z działaniami dodawania i mnożenia, możemy zdefiniować dodawanie i mnożenie na klasach abstrakcji. Mówiąc w skrócie, aby wykonać działanie na dwóch klasach abstrakcji, wybieramy dowolnych przedstawicieli tych klas i wykonujemy działania na tych przedstawicielach. Dokładniej, dodawanie klas abstrakcji definiujemy następująco: [x] + [y] = [x + y]. Podobnie definiujemy odejmowanie i mnożenie: [x] [y] = [x y], [x] [y] = [x y]. Poniższy lemat pokazuje, że działania te są dobrze zdefiniowane; że wynik działania na dwóch klasach nie zależy od wyboru reprezentantów. Lemat 1.13 Jeżeli [x] = [y] oraz [u] = [w], to: [x + u] = [y + w], [xu] = [yw] oraz [x u] = [y w]. Dowód. Z założenia mamy: a z twierdzenia 1.7: x = y (mod m) oraz u = w (mod m). [x + u] = [y + w], [x u] = [y w] oraz [xu] = [yw]. Przykład 1.14 Niech m = 3. Dla dowolnych dwóch liczb x [0] i y [1] ich suma x + y należy do [0 + 1] = [1] a iloczyn do [0 1] = [0]. Lemat 1.15 Działania na klasach abstrakcji spełniają następujące warunki: [0], [1],..., [n 1] dodawanie oraz mnożenie sa przemienne i łaczne, klasa [0] jest elementem neutralnym dodawania, to znaczy dla każdego a mamy [a] + [0] = [a], dla każdej klasy [a] istnieje klasa do niej przeciwna [ a], taka że [a] + [ a] = [0], klasa [1] jest elementem neutralnym mnożenia, to znaczy dla dowolnego [x] mamy [x] [1] = [x],
1.5. Pierścień Z m 9 mnożenie jest rozdzielne względem dodawania, czyli dla każdych trzech klas [x], [y], [z] mamy [x]([y] + [z]) = [x][y] + [x][z]. Zbiór z dwoma działaniami spełniajacymi powyższe warunki nazywa się pierścieniem przemiennym z jedynka. Dowód: Udowodnimy tylko rozdzielność: [x]([y] + [z]) = [x][y + z] = [x(y + z)] = [xy + xz] = [xy] + [xz] = [x][y] + [x][z]. Skorzystaliśmy w tym dowodzie z rozdzielności mnożenia względem dodawania dla liczb całkowitych. 1.5.1 Pierścień Z 5 Rozważmy zbiór reszt modulo 5. Składa się on z pięciu klas: [0], [1], [2], [3], [4], dla prostoty będziemy dalej opuszczać nawiasy. Mamy więc zbiór: Z 5 = {0, 1, 2, 3, 4} z dodawaniem i mnożeniem określonym następującymi tabelami: + 0 1 2 3 4 0 0 1 2 3 4 1 1 2 3 4 0 2 2 3 4 0 1 3 3 4 0 1 2 4 4 0 1 2 3 0 1 2 3 4 0 0 0 0 0 0 1 0 1 2 3 4 2 0 2 4 1 3 3 0 3 1 4 2 4 0 4 3 2 1 Zauważmy, że każdy element oprócz zera ma w Z 5 element odwrotny względem mnożenia, czyli dla każdego x Z 5 {0} istnieje x 1, taki że xx 1 = 1: 1 1 = 1, 2 1 = 3, 3 1 = 2, 4 1 = 4. Dlatego Z 5 jest ciałem, czyli pierścieniem przemiennym z jedynką i z odwrotnością względem mnożenia. 1.5.2 Pierścień Z 4 Rozważmy teraz pierścień reszt modulo 4: Z 4 = {0, 1, 2, 3}, gdzie dodawanie i mnożenie jest określone następującymi tabelami:
10 Rozdział 1. Teoria liczb + 0 1 2 3 0 0 1 2 3 1 1 2 3 0 2 2 3 0 1 3 3 0 1 2 0 1 2 3 0 0 0 0 0 x 1 0 1 2 3 2 0 2 0 2 3 0 3 2 1 Z 4 nie jest ciałem, ponieważ nie ma w nim elementu odwrotnego do 2. Ponadto w Z 4 mamy: 2 2 = 0, czyli zero można przedstawić jako iloczyn dwóch liczb różnych od zera. Łatwo zauważyć, że jeżeli liczba m jest złożona, m = pq dla 1 < p, q < m, to w pierścieniu Z m mamy pq = 0 i ani p, ani q nie mają elementów odwrotnych. Przypuśćmy bowiem, że istnieje p 1. Mamy wtedy: 0 = p 1 0 = p 1 (pq) = (p 1 p)q = 1q = q, czyli q = 0, sprzeczność. Tak więc Z m nie jest ciałem, jeżeli m jest liczbą złożoną. W dalszej części tego rozdziału zobaczymy, że jeżeli m jest liczbą pierwszą, to Z m jest ciałem. 1.6 Największy wspólny dzielnik Dla dwóch liczb całkowitych a i b, ich największy wspólny dzielnik to po prostu największa liczba całkowita n, która dzieli a i b. Największy wspólny dzielnik liczb a i b będziemy oznaczać przez N W D(a, b). Przykład 1.16 NW D(4, 6) = 2, NW D(4, 0) = 4, NW D(4, 6) = 2. 1.7 Algorytm Euklidesa Aby obliczyć największy wspólny dzielnik dwóch dodatnich liczb naturalnych a, b robimy co następuje dopóki a b 0 wykonuj: jeżeli a b, to a := a mod b w przeciwnym przypadku b := b mod a; NWD:=a+b Powyższy algorytm oblicza resztę z dzielenia większej liczby przez mniejszą tak długo, aż otrzyma zero. Wtedy wynikiem działania algorytmu jest ta druga liczba (jeżeli a = 0, to a + b = b, a jeżeli b = 0, to a + b = a). W poniższej tabeli pokazano kolejne kroki działania algorytmu Euklidesa na parze liczb 36 i 15:
1.7. Algorytm Euklidesa 11 a b 36 15 6 15 6 3 0 3 Tak więc 3 jest największym wspólnym dzielnikiem liczb 15 i 36. Poprawność algorytmu Euklidesa wynika z poniższego lematu. Lemat 1.17 Niech a i b będą dwoma liczbami naturalnymi i niech 0 < b a. Wtedy para a, b ma taki sam zbiór wspólnych dzielników jak para a mod b, b. Dowód. Z definicji ilorazu i reszty mamy a = (a b) b + a mod b. Jeżeli liczba r jest wspólnym dzielnikiem pary a, b, to r dzieli także resztę a mod b, czyli r jest wspólnym dzielnikiem pary (a mod b), b. Na odwrót, jeżeli liczba r jest wspólnym dzielnikiem pary (a mod b), b, to r dzieli także a, czyli r jest wspólnym dzielnikiem pary a, b. Tak więc po każdej iteracji pętli while para a, b ma taki sam zbiór wspólnych dzielników, a więc także taki sam największy wspólny dzielnik. Na końcu, gdy a = 0 lub b = 0, NW D = a + b, czyli jest równy tej drugiej liczbie. Należy jeszcze pokazać, że dla każdej pary dodatnich liczb naturalnych a i b algorytm zatrzyma się. Ale to wynika z faktu, że po każdej iteracji pętli dopóki liczba max{a, b} jest coraz mniejsza, a ponieważ jest to zawsze liczba naturalna dodatnia, więc nie może zmniejszać się w nieskończoność. Twierdzenie 1.18 Niech a i b będą dwoma dodatnimi liczbami naturalnymi i niech d = N W D(a, b). Wtedy istnieja liczby całkowite x i y, takie że: xa + yb = d, lub mówiac inaczej, d jest kombinacją całkowitoliczbową liczb a i b. Dowód. Niech a 0 i b 0 oznaczają początkowe wartości zmiennych a i b, odpowiednio. Pokażmy, że wszystkie wartości, jakie przyjmują zmienne a i b w trakcie wykonywania algorytmu Euklidesa, są całkowitoliczbowymi kombinacjami liczb a 0 i b 0. Na początku, gdy a = a 0 i b = b 0, mamy: a = 1a 0 + 0b 0, b = 0a 0 + 1b 0. Załóżmy teraz, że po i-tej iteracji pętli a > b oraz że zachodzi: a = x a a 0 + y a b 0, b = x b a 0 + y b b 0.
12 Rozdział 1. Teoria liczb Wtedy w (i + 1) iteracji a będzie pomniejszone o b (a b) i będziemy mieli: a = (x a x b (a b))a 0 + (y a y b (a b))b 0 oraz b = x b a 0 + y b b 0. Z tego wynika, że także ostateczna wartość d jest kombinacją liczb a 0 i b 0. 1.7.1 Rozszerzony algorytm Euklidesa Algorytm Euklidesa można tak zmodyfikować, aby oprócz największego wspólnego dzielnika NW D(a, b), wyliczał także liczby x i y, takie że: Oto ten algorytm xa + yb = NW D(a, b). x a := 1; y a := 0; x b := 0; y b := 1; dopóki a b 0 wykonuj: jeżeli a b, to a := a mod b x a := x a x b (a b); y a := y a y b (a b) w przeciwnym przypadku b := b mod a; x b := x b x a (b a); y b := y b y a (b a) NW D := a + b jeżeli a > 0, to x := x a ; y := y a ; jeżeli b > 0, to x := x b ; y := y b ; W poniższej tabeli pokazano kolejne kroki działania rozszerzonego algorytmu Euklidesa na parze liczb 36 i 15: a b x a y a x b y b 36 15 1 0 0 1 6 15 1-2 0 1 6 3 1-2 -2 5 0 3 5-12 -2 5 Tak więc liczbę 3 można przedstawić jako kombinację liczb 15 i 36 w następujący sposób: 3 = ( 2) 36 + (5) 15.
1.8. Liczby pierwsze i względnie pierwsze 13 Zauważmy, że jeżeli jakaś liczba r dzieli liczby a i b, to dzieli także każdą ich kombinację całkowitą xa + yb, a więc dzieli także największy wspólny dzielnik N W D(a, b). Udowodniliśmy poniższy lemat. Lemat 1.19 NW D(a, b) jest podzielny przez każdy wspólny dzielnik liczb a i b. Z lematu 1.19 wynika, że największy wspólny dzielnik NW D(a, b) może być równoważnie zdefiniowany jako taki wspólny dzielnik liczb a i b, który jest podzielny przez każdy wspólny dzielnik a i b. Lemat 1.20 Liczba naturalna d jest największym wspólnym dzielnikiem liczb a i b wtedy i tylko wtedy gdy d jest wspólnym dzielnikiem a i b oraz istnieja liczby całkowite x i y, takie że d = xa + yb. Dowód Jeżeli NW D(a, b) = d to d a, d b oraz (z twierdzenia 1.18) istnieją liczby całkowite x i y, takie że: d = xa + yb. Na odwrót, jeżeli d dzieli a i b oraz xa + yb = d, to każdy wspólny dzielnik a i b dzieli d, a więc d jest największym wspólnym dzielnikiem a i b. Wniosek 1.21 Jeżeli istnieja liczby całkowite x i y, takie, że xa+yb = 1, to NW D(a, b) = 1. Przykład 1.22 Ponieważ: 2000 1998 = 2 oraz 2 jest wspólnym dzielnikiem 1998 i 2000, więc NW D(1998, 2000) = 2. 2001 1999 = 2, więc NW D(1999, 2001) dzieli 2, a ponieważ 2 nie dzieli ani 1999, ani 2001, więc NW D(1999, 2001) = 1. 1.8 Liczby pierwsze i względnie pierwsze Dwie liczby naturalne a i b są względnie pierwsze, jeżeli NW D(a, b) = 1, a liczba naturalna p jest pierwsza, jeżeli p > 1 i jedynymi dzielnikami naturalnymi p są jedynka i samo p. Oto wszystkie liczby pierwsze mniejsze od 50: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47. Liczba n > 1, która nie jest pierwsza jest złożona. Istnieją wtedy dwie liczby k, m < n, takie, że n = k m.
14 Rozdział 1. Teoria liczb 1.9 Rozkład liczb na czynniki pierwsze W tym rozdziale zobaczymy, że każdą liczbę naturalną n > 1 można rozłożyć na czynniki pierwsze i że taki rozkład jest jednoznaczny z dokładnością do kolejności czynników. Na przykład: 12 = 2 2 3 i 180 = 2 2 3 2 5. Przyjmujemy przy tym, że jeżeli liczba jest pierwsza, to jej rozład składa się tylko z jednej liczby. Twierdzenie 1.23 Każda liczbę naturalną n > 1 można przedstawić jako iloczyn liczb pierwszych (niekoniecznie różnych): n = q 1 q 2 q r. Dowód nie wprost. 2 jako liczba pierwsza ma trywialny rozkład składający się z jednej liczby. Przypuśćmy, że istnieje liczba naturalna n, której nie można przedstawić jako iloczynu liczb pierwszych i że n jest najmniejszą taką liczbą. n nie może być liczbą pierwszą (bo wtedy n = q 1 ), więc n jest liczbą złożoną, czyli jest postaci: n = km dla k, m < n. Ale ponieważ k i m są mniejsze od n, więc można je rozłożyć na czynniki pierwsze k = p 1 p 2 p s oraz m = r 1 r 2 r t, ale wtedy, wbrew założeniu, mamy rozkład liczby n na czynniki pierwsze: n = p 1 p 2 p s r 1 r 2 r t. Aby pokazać, że rozkład jest jednoznaczny (z dokładnością do kolejności czynników), musimy najpierw udowodnić dwa lematy. Lemat 1.24 Niech a i b będa dodatnimi względnie pierwszymi liczbami naturalnymi. Wtedy dla dowolnej liczby c, jeżeli a bc, to a c. Dowód. Z twierdzenia 1.18, istnieją dwie liczby całkowite x i y, takie że: xa + yb = 1. Pomnóżmy teraz obie strony tego równania przez c: xac + ybc = c, i zauważmy, że a dzieli oba składniki po lewej stronie równania, a więc dzieli prawą stronę, czyli c.
1.10. Elementy odwracalne 15 Lemat 1.25 Jeżeli liczba pierwsza p dzieli iloczyn liczb pierwszych q 1 q 2 q r (niekoniecznie różnych), to wtedy p jest równe jednej z liczb q i. Dowód przez indukcję ze względu na r. Dla r = 1 mamy p q 1, a ponieważ q 1 jest pierwsza i p > 1, więc p = q 1. Załóżmy teraz, że teza zachodzi dla r i przypuśćmy, że p dzieli q 1 q 2 q r q r+1. Mamy dwa przypadki: albo p dzieli q r+1, albo nie. W pierwszym przypadku p = q r+1. W drugim przypadku mamy NW D(p, q r+1 ) = 1, bo 1 i q r+1 to jedyne dzielniki liczby q r+1. Z lematu 1.24 wynika teraz, że p dzieli q 1 q 2 q r, a z założenia indukcyjnego, że p = q i dla jakiegoś 1 i r.. Udowodnimy teraz, że rozkład liczby na czynniki pierwsze jest jednoznaczny, z dokładnością do kolejności czynników. Twierdzenie 1.26 Każda liczbę naturalną n > 1 można w dokładnie jeden sposób przedstawić w postaci iloczynu: n = p α1 1 pα2 2... pαr r, gdzie α i sa dodatnimi liczbami naturalnymi, p i sa liczbami pierwszymi oraz zachodzi p 1 < p 2 <... < p r. Dowód. Twierdzenie 1.23 orzeka, że liczba ma rozkład na czynniki pierwsze. Trzeba pokazać, że jest to rozkład jednoznaczny. n = 2 jako liczba pierwsza ma jednoznaczny rozkład. Przypuśćmy, że n jest najmniejszą liczbą z dwoma różnymi rozkładami: n = p α1 1 pα2 2... pαr r = q β1 1 qβ2 2... qβs s. (1.1) Wtedy z jednej strony p 1 nie może występować po prawej stronie równania (1.1), bo n p 1 byłoby mniejszą liczbą z niejednoznacznym rozkładem. Z drugiej strony p 1 dzieli prawą stronę, a więc, z lematu 1.25 występuje po prawej stronie. Mamy więc sprzeczność. Lemat 1.27 Jeżeli a i b sa względnie pierwsze, to ich rozkłady sa rozłaczne. To znaczy maja rozłaczny zbiór liczb pierwszych występujacych w ich rozkładach. 1.10 Elementy odwracalne Definicja 1.28 Element a Z m jest odwracalny, jeżeli istnieje b Z m, takie, że a b = 1 (mod m). b nazywamy elementem odwrotnym do a i oznaczamy przez a 1.
16 Rozdział 1. Teoria liczb Przykład 1.29 Liczba 3 jest odwracalna w Z 8 bo 3 3 = 1 (mod 8). Oprócz 3 w Z 8 odwracalne sa także 1, 5 i 7. Lemat 1.30 Liczba a Z m jest odwracalna wtedy i tylko wtedy, gdy NW D(a, m) = 1. Dowód. Jeżeli NW D(a, m) = 1, to istnieją liczby całkowite x i y, takie że: a więc m dzieli ax 1, czyli: xa + ym = 1, ax = 1 (mod m). Teraz wystarczy przyjąć za a 1 taką liczbę z przedziału od 1 do m 1, która przystaje do x modulo m. Z drugiej strony jeżeli istnieje element a 1 odwrotny do a to czyli dla jakiegoś k. Mamy więc czyli NW D(a, m) = 1 (wniosek 1.21). a 1 a = 1 (mod m) a 1 a 1 = k m a 1 a + ( k)m = 1 Z powyższego dowodu wynika, że element odwrotny do a można wyliczyć stosując algorytm Euklidesa. Na przykład, policzmy element odwrotny do 12 w pierścieniu Z 17. Najpierw zastosujemy algorytm Euklidesa, aby obliczyć x i y, takie że: 12x + 17y = 1. Kolejne kroki algorytmu przedstawiono w tabeli: Mamy więc: czyli: ale: a b x a y a x b y b 17 12 1 0 0 1 5 12 1-1 0 1 5 2 1-1 -2 3 1 2 5-7 -2 3 1 0 5-7 -12 17 5 17 + ( 7)12 = 1, ( 7)12 = 1 (mod 17), 7 = 10 (mod 17), czyli 10 jest elementem odwrotnym do 12 w pierścieniu Z 17.
1.11. Funkcja liniowa 17 Definicja 1.31 Zbiór elementów odwracalnych w Z n oznaczamy przez Z n. Przykład 1.32 Z 8 = {1, 3, 5, 7}. Lemat 1.33 Jeżeli liczba m jest pierwsza, to każdy element a Z m, a 0, jest odwracalny, czyli pierścień Z m jest ciałem. Lemat 1.34 Jeżeli a, b Z n to ab Z n oraz a 1 Z n. To oznacza, że Z n z mnożeniem jest grupą. Dowód: Elementem odwrotnym do iloczynu ab jest b 1 a 1, a elementem odrotnym do a 1 jest a. 1.11 Funkcja liniowa Zastanówmy się jak w pierścieniu Z m działa funkcja liniowa f(x) = a x (mod m). Rozpatrzmy najpierw przypadek, gdy a i m są względnie pierwsze, czyli gdy NW D(a, m) = 1. Dla m = 8 i a = 3 wartości funkcji przedstawia tabela x 0 1 2 3 4 5 6 7 3x 0 3 6 1 4 7 2 5 W takim przypadku istnieje a 1 element odwrotny do a i funkcja g(x) = a 1 x, która jest odwrotna do f. Rzeczywiście f(g(x)) = aa 1 x = x. Z tego wynika, że f jest wzajemnie jednoznaczna i "na" oraz, że dla każdego b Z m równanie ax = b ma dokładnie jedno rozwiązanie w pierścieniu Z m, jest ono równe x = a 1 b. Funkcja f jest permutacją w Z m i wykorzystuje się ją, gdy trzeba wymieszać (przepermutować) elementy Z m. Zauważmy, że f jest także permutacją w Z m. Rzeczywiście, jeżeli x Z m, to na podstawie lematu 1.34 f(x) = ax Z m. Mamy więc Lemat 1.35 Jeżeli NW D(a, m) = 1, to funkcja f(x) = ax jest funkcja wzajemnie jednoznaczną w Z m i w Z m. Rozpatrzmy teraz przypadek, gdy a i m nie są względnie pierwsze, czyli gdy NW D(a, m) = d > 1. Dla m = 8 i a = 6 wartości funkcji przedstawia tabela x 0 1 2 3 4 5 6 7 6x 0 6 4 2 0 6 4 2
18 Rozdział 1. Teoria liczb Zauważmy, że jeżeli b jest wartością funkcji f, czyli gdy ax = b (mod m) to istnieje takie k, że ax b = km, a ponieważ d dzieli a i m, to d dzieli b, a więc wartościami funkcji f mogą być tylko liczby podzielne przez d. Lemat 1.36 Jeżeli NW D(a, m) = d oraz d b, to równania ax = b (mod m) oraz a d x = b (mod m d d ) sa równoważne, czyli maja ten sam zbiór rozwiazań w zbiorze liczb całkowitych. Dowód ax = b (mod m) wtedy i tylko wtedy, gdy istnieje k takie że ax b = km, a to zachodzi wtedy i tylko wtedy, gdy istnieje k takie, że czyli wtedy i tylko wtedy, gdy a d x b d = k m d, a d x = b d (mod m d ). Przypuśćmy teraz, że d dzieli b i rozwiążmy równanie ax = b (1.2) w pierścieniu Z m, czyli szukamy takich x {0,..., m 1}, że ax = b (mod m) (1.3) Z lematu 1.36, to równanie jest równoważne równaniu a d x = b d (mod m d ) (1.4)
1.12. Szyfry liniowe 19 Ale teraz NW D( a d, m d ) = 1 i równanie (1.4) ma dokładnie jedno rozwiązanie x 0 {0,..., m d 1} takie że a d x 0 = b (mod m d d ). Ale równania (1.4) i (1.3) są spełnione także przez liczby x 0, x 0 + m d, x 0 + 2 m d,..., x 0 + (d 1) m d. Są to wszystkie liczby ze zbioru {0,..., m 1} spełniające równania (1.4) i (1.3), czyli wszystkie rozwiązania równania (1.2) w pierścieniu Z m. Przykład 1.37 Rozwiażmy równanie 6x = 9 (mod 15). (1.5) Ponieważ N W D(6, 15) = 3, więc najpierw rozwiazujemy równanie 2x = 3 (mod 5) W Z 5 mamy 2 1 = 3 więc rozwiazaniem jest x 0 = 3 3 = 4. Tak więc rozwiazaniami równaia (1.5) w Z 15 sa liczby 4, 9, 14. 1.12 Szyfry liniowe Przypuśćmy, że mamy tekst zapisany za pomocą 26 liter alfabetu łacińskiego: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, i chcemy ten tekst zaszyfrować. W tym celu utożsamiamy zbiór liter z elementami pierścienia Z 26 : a = 0, b = 1, c = 2,..., z = 25, wybieramy dwie liczby a, b Z 26, takie że NW D(a, 26) = 1, i szyfrujemy litera po literze według wzoru: C(x) = ax + b (mod 26). Funkcja deszyfrująca jest określona wzorem: Rzeczywiście: D(y) = a 1 y a 1 b (mod 26). D(C(x)) = a 1 (ax + b) a 1 b = a 1 ax + a 1 b a 1 b = x. Z tego wynika, że funkcja szyfrująca C(x) jest wzajemnie jednoznaczna.
20 Rozdział 1. Teoria liczb Przykład 1.38 Wybierzmy a = 23 i b = 20 i zaszyfrujmy słowo matematyka. W tym celu musimy zaszyfrować 6 liter: m, a, t, e, y oraz k. Obliczenia przedstawiono w tabeli: litera x C(x) szyfr m 12 10 k a 0 20 u t 19 15 p e 4 8 i y 24 0 a k 10 16 q Słowo matematyka po zaszyfrowaniu wyglada tak: kupikupaqu. Jeżeli zaś zastosujemy ten sam szyfr do poczatkowego zdania z wiersza Lokomotywa Juliana Tuwima: stoi na stacji lokomotywa, to otrzymamy: spewhuspuotwneqekepagu. Szyfry liniowe są bardzo starym wynalazkiem. W prostszej wersji z a = 1 stosował je już Juliusz Cezar. Ich wadą jest to, że bardzo łatwo dają się łamać. Czasami wystarcza odgadnąć, jak zaszyfrowano dwie litery. Można to zrobić analizując częstości występowania liter w zaszyfrowanym tekście. Przykład 1.39 (kontynuacja przykładu 1.38) W naszym drugim zaszyfrowanym tekście litera e występuje cztery razy, a litery p i u po trzy razy. Może to nam pomóc w odgadnięciu, że litera e koduje literę o, a litera p koduje literę t. Mamy więc dwa równania: Po odjęciu tych równań stronami mamy: 15 = 19a + b (mod 26), 4 = 14a + b (mod 26). 11 = 5a (mod 26). Korzystajac z algorytmu Euklidesa, możemy teraz wyliczyć element odwrotny do 5 w pierścieniu Z 26. Jest to 21, ponieważ: tak więc: ( 5)5 + 26 = 1 oraz 5 = 21 (mod 26), a = 21 11 = 231 = 23 (mod 26). Teraz z drugiego równania możemy wyliczyć b: b = 15 19 23 = 20 (mod 26).
1.13. Chińskie twierdzenie o resztach 21 1.13 Chińskie twierdzenie o resztach W starożytnych Chinach generałowie używali pewnego ciekawego sposobu liczenia swoich żołnierzy. Dla kilku niewielkich liczb parami względnie pierwszych, na przykład dla: m 1 = 3, m 2 = 5, m 3 = 7, obliczano i zapamiętywano reszty z dzielenia liczby żołnierzy przez te liczby. W celu obliczenia reszt kazano żołnierzom ustawić się trójkami, piątkami i siódemkami. Jeżeli przy następnym apelu wszystkie trzy reszty były takie same, to znaczyło, że nie brakuje żadnego żołnierza. Zobaczmy, jak ten sposób działa. Weźmy najpierw dwie liczby: m 1 = 2 m 2 = 3. W poniższej tabeli mamy zestawione reszty modulo 2 i 3 liczb od 0 do 5: a a (mod 2) a (mod 3) 0 0 0 1 1 1 2 0 2 3 1 0 4 0 1 5 1 2 Każda z liczb od 0 do 5 = 2 3 1 ma inny zestaw reszt oraz dla każdej pary reszt (a 1, a 2 ), spełniających warunek 0 a 1 < 2, 0 a 2 < 3, istnieje liczba a, taka że: Oczywiście 6 ma takie same reszty jak 0: a 1 = a (mod 2), a 2 = a (mod 3). 0 = 6 (mod 2), 0 = 6 (mod 3), i ogólnie, jeżeli dwie liczby a i b różnią się o wielokrotność liczby 6 = 2 3, czyli: a = b + k 6 dla jakiegoś całkowitego k, to a (mod 2) = b (mod 2), a (mod 3) = b (mod 3). Z tego widać, że sposób chińskich generałów, z liczbami 2 i 3, liczy żołnierzy z dokładnością do pięciu.
22 Rozdział 1. Teoria liczb Sytuacja jest inna, jeżeli m 1 i m 2 nie są względnie pierwsze. Jeżeli, na przykład, m 1 = 4 i m 2 = 6, to wśród liczb od 0 do 23 = 4 6 1 istnieją takie, które mają takie same reszty, na przykład 1 i 13: 1 (mod 4) = 13 (mod 4) = 1, 1 (mod 6) = 13 (mod 6) = 1. Ponadto nie istnieje taka liczba a, dla której: 1 = a (mod 4), 0 = a (mod 6). Rzeczywiście, z pierwszej równości wynika, że a powinno być nieparzyste, a z drugiej, że parzyste. Jeżeli jednak m 1 i m 2 są względnie pierwsze, to każda z liczb od 0 do m 1 m 2 1 ma inny zestaw reszt oraz dla każdej pary reszt (a 1, a 2 ), spełniających warunek 0 a 1 < m 1, 0 a 2 < m 2, istnieje liczba a, taka że: zachodzi bowiem poniższe twierdzenie. a 1 = a (mod m 1 ), a 2 = a (mod m 2 ), Twierdzenie 1.40 (chińskie twierdzenie o resztach) Niech m 1, m 2,..., m r będą dodatnimi liczbami względnie pierwszymi, to znaczy dla każdej pary 1 i < j r mamy NW D(m i, m j ) = 1, oraz niech a 1, a 2,..., a r będą dowolnymi resztami. Wtedy istnieje liczba całkowita a, taka że: a 1 = a (mod m 1 ), a 2 = a (mod m 2 ), (1.6)... a r = a (mod m r ). Ponadto jeżeli liczby a i b sa rozwiazaniami układu kongruencji (??), to ich różnica a b dzieli się przez iloczyn wszystkich liczb m i, czyli przez: r M = m i. i=1
1.13. Chińskie twierdzenie o resztach 23 Dowód. Najpierw udowodnimy drugą część twierdzenia. Dla każdego 1 i r mamy: a i = a (mod m i ) oraz a i = b (mod m i ). Po odjęciu stronami tych dwóch równań mamy: czyli 0 = a b (mod m i ), m i (a b), Druga część twierdzenia wynika z następującego lematu: Lemat 1.41 Jeżeli każda spośród liczb m i dzieli a b i liczby m 1,..., m r sa względnie pierwsze, to także ich iloczyn M dzieli a b. Dowód Lematu. Liczba m 1 dzieli a b, więc istnieje K 1 takie, że a b = K 1 m 1. Liczba m 2 też dzieli a b, a ponieważ jest względnie pierwsza z m 1, więc na podstawie Lematu 1.24, m 2 dzieli K 1 i mamy a b = K 2 m 2 m 1, dla jakiegoś K 2. Podobnie, liczba m 3 jest względnie pierwsza z m 1, więc dzieli iloczyn K 2 m 2, ale jest także względnie pierwsza z m 2, więc dzieli K 2 i mamy a b = K 3 m 3 m 2 m 1, dla pewnego K 3. Powtarzając to rozumowanie r razy dochodzimy do wniosku, że istnieje takie K r, że a b = K r m r m 1, Dowód Lematu, ciag dalszy. Zobaczymy teraz, że układ (1.6) ma rozwiązanie. Niech M i = M m i, czyli: M i = m 1 m i 1 m i+1... m r. Ponieważ M i i m i mają rozłączne rozkłady, więc NW D(m i, M i ) = 1 oraz istnieje N i, takie że: M i N i = 1 (mod m i ). Zauważmy, że jeżeli i j, to m i M j, oraz że każdy iloczyn m i M i ma następującą własność m i M i = 1 (mod m i ), m i M i = 0 (mod m j ) dla j i,
24 Rozdział 1. Teoria liczb Weźmy teraz: Z powyższej własności wynika, że a = r a i M i N i. i=1 a = a i (mod m i ) dla każdego i, a więc a jest rozwiązaniem układu równań (1.6). Przykład 1.42 W przypadku ukłau dwóch równań nasze rozumowanie można trochę uprościć. Weźmy, na przykład, układ a 1 = a (mod 3), (1.7) a 2 = a (mod 5), Ponieważ 3 i 5 sa względnie pierwsze, więc istnieja x i y takie, że 3x + 5y = 1 Za pomocą rozszerzonego algorytmu możemy wyliczyć x i y, mamy 3 2 + 5 ( 1) = 1 Teraz zauważmy, że iloczyny 3 2 oraz 5 ( 1) maja następujące własności Dlatego liczba jest rozwiazaniem układu 1.7 3 2 = 0 (mod 3), 3 2 = 1 (mod 5), 5 ( 1) = 1 (mod 3), 5 ( 1) = 0 (mod 5), a 2 3 2 + a 1 5 ( 1) = 1 Przykład 1.43 Każda z liczb od 0 do 104 = 3 5 7 1 ma inny zestaw reszt względem liczb 3, 5 i 7. Tak więc stosujac sposób chińskich generałów z liczbami 3, 5, 7 możemy liczyć żołnierzy z dokładnością do 104. Ale sposób chińskich generałów pozwala także stwierdzić, o ile zmieniła się liczba żołnierzy. Przypuśćmy bowiem, że na porannym apelu było x żołnierzy i uzyskano reszty: x 1 = x (mod 3), x 2 = x (mod 5), x 3 = x (mod 7), a na apelu wieczornym było y żołnierzy i otrzymano reszty: y 1 = y (mod 3), y 2 = y (mod 5), y 3 = y (mod 7), wtedy różnica x y spełnia następujący układ kongruencji: x 1 y 1 = x y (mod 3), x 2 y 2 = x y (mod 5), x 3 y 3 = x y (mod 7).
1.14. Obliczenia na dużych liczbach 25 1.14 Obliczenia na dużych liczbach Chińskie twierdzenie o resztach pozwala wnioskować o dużych liczbach za pomocą operacji na małych liczbach. Zobaczmy teraz kilka przykładów. Przykład 1.44 Rozważmy następujące równanie. 58 721 569 54 567 769 = 71 900 738 41 312 424 + 14 969 161 15 626 209. Chińskie twierdzenie o resztach daje możliwość sprawdzenia tego równania operując tylko na stosunkowo małych liczbach. Sprawdzamy to równanie liczac modulo kilka niedużych liczb względnie pierwszych, na przykład: m 1 = 999, m 2 = 1000, m 3 = 1001, m 4 = 1003, m 5 = 1007, m 6 = 1009. Jeżeli lewa strona równa się prawej modulo wszystkie te liczby, to równa się także w liczbach całkowitych, ponieważ iloczyn tych liczb m 1 m 2 m 3 m 4 m 5 m 6 > (10 3 ) 6 = 10 18 jest większy od lewej i prawej strony. Inny sposob, to sprawdzenie tej równości modulo wszystkie liczby pierwsze mniejsze od 50. Ich iloczyn jest większy od 10 17. Przykład 1.45 Zastanówmy się teraz nad rozwiazaniem równania x 56 606 581 = 71 900 738 41 312 424 + 14 969 161 15 626 209. Jeżeli spodziewamy się, że rozwiazaniem jest liczba naturalna, to znowu możemy wykorzystać obliczenia modulo. Wybieramy dużą liczbę pierwsza p, większa od każdej liczby występujacej w tym równaniu, a następnie rozwiazujemy to równanie w ciele Z p x = (56 606581) 1 (71 900 738 41 312 424 + 14 969 161 15 626 209). Tak otrzymane rozwiazanie możemy zweryfikować metodą z poprzedniego przykładu. Stosując ta metodę unikamy zaokrągleń, które przy bardziej skomplikowanych rachunkach moga się kumulować. Można, na przykład, w ten sposób rozwiazywać duże układy równań liniowych, w których wszystkie współczynniki i rozwiazania sa liczbami całkowitymi. Przykład 1.46 Zastanówmy się, ile wynosi reszta z dzielenia liczby M = 1 997 199 919 przez 15. Łatwo można policzyć, że: M = 4 (mod 5) oraz M = 1 (mod 3), a więc: M = 4 (mod 15), ponieważ 4 jest jedyną liczb a z przedziału 0, 1, 2,..., 14, która posiada reszty 4 = 1 (mod 3) oraz 4 = 4 (mod 5).
26 Rozdział 1. Teoria liczb 1.15 Algorytm rosyjskich chłopów mnożenia liczb W poprzednim podrozdziale obliczaliśmy iloczyny typu (x y) (mod m). Jeżeli wyrażenie to będziemy obliczać najpierw mnożąc, a potem licząc resztę, to wynik pośredni x y może być dużo większy niż m. W tym podrozdziale pokażemy jak obliczać takie wyrażenia bez dużych wyników pośrednich. W tym celu rozważmy następujący algorytm mnożenia dwóch liczb. Algorytm ten był stosowany w Rosji. Aby pomnożyć dwie liczby a i b naturalne postępujemy w następujący sposób: Na początku dwóch kolumn wpisujemy a oraz b Powtarzamy następujący ciąg instrukcji dopóki na końcu drugiej kolumny pojawi się 0. Ostatni wyraz w pierwszej kolumnie mnożymy przez dwa, Ostatni wyraz drugiej kolumny dzielimy przez 2 (bez reszty). Następnie dodajemy te wyrazy pierwszej kolumny, dla których w drugiej kolumnie jest liczba nieparzysta. Przykład 1.47 Poniższa tabela ilustruje działanie algorytmu podczas obliczania 24 20. Do kolumn z wartściami a i b dodaliśmy na poczatku kolumnę z numerem rzędu. i a b 0 24 20 1 48 10 2 96 5 3 192 2 4 384 1 5 768 0 Teraz należy dodać wartości z pierwszej kolumny, które znajdują się w drugim i czwartym rzędzie, czyli 24 20 = 96 + 384 = 480. Zauważmy, że rzędy sa numerowane od zera. Poprawność algorytmu wynika z faktu, że b może być przedstawione w postaci dwójkowej j b = d i 2 i. Ponieważ cyfry d i {0, 1}, więc b jest sumą potęg dwójki. Na przykład i=0 20 = 16 + 4 = 2 4 + 2 2.
1.16. Szybkie potęgowanie 27 Potęga 2 i występuje w takiej sumie, jeżeli w rozwinięciu dwójkowym b cyfra d i = 1. Mnożąc 24 przez 20 mamy 24 20 = 24 (2 4 + 2 2 ) = 24 2 4 + 24 2 2, czyli iloczyn 24 20 jest sumą wszystkich liczb postaci 24 2 i, dla których d i = 1. Tak właśnie liczy algorytm rosyjskich chłopów. W i-tym rzędzie pierwszej kolumny mamy wartość a 2 i. Jeżeli wyraz w drugiej kolumnie jest nieparzysty to i-ty bit rozwinięcia b jest równy d i = 1. Zastosujmy teraz algorytm rosyjskich chłopów do obliczania iloczynu a b (mod m). Algorytm mnożenia Dane wejściowe: czynniki mnożenia a oraz b. Dane wyjściowe: Iloczyn a b mod m iloczyn := 0 dopóki b > 0 wykonuj jeżeli b mod 2 = 1 to iloczyn := (iloczyn + a) mod m; a := (2 a) mod m; b := b 2; Zauważmy, że wyniki pośrednie, i ostateczny, należą do Z m i algorytm nie potrzebuje zbyt dużej pamięci. 1.16 Szybkie potęgowanie Teraz zastanowimy się jak można potęgować, czyli jak obliczyć a k mod n dla a Z n oraz k N. Pierwszy nasuwający się algorytm potęgowania polega na k krotnym mnożeniu przez a: y := 1; dla i od 0 do k wykonuj y := (y a) mod n W kryptografii oblicza się potęgi z wykładnikami posiadającymi po kilkaset bitów. Do takich zastosowań powyższy algorytm jest nieprzydatny (wymaga on k mnożeń). Pokażemy teraz jak można potęgować dużo szybciej. Zauważmy, że a a = a 2, a 2 a 2 = a 4 i ogólnie a 2i a 2i = a 2i+1. Dlatego, aby obliczyć potęgę o wykładniku, który jest potęgą dwójki k = 2 j należy wykonać
28 Rozdział 1. Teoria liczb y := a; dla i od 0 do j wykonuj y := (y y) mod n Przykład 1.48 Aby obliczyć 2 16 w Z 21 obliczmy 2 2 = 2 2 = 4 (mod 21), 2 4 = 4 4 = 16 (mod 21), 2 8 = 16 16 = 4 (mod 21), 2 16 = 4 4 = 16 (mod 21). Jeżeli wykładnik jest sumą potęg dwójki k = 2 i + 2 j, to a k = a 2i a 2j. Przykład 1.49 Aby obliczyć 2 20 mod 21 trzeba wymnożyć 2 20 = 2 16 2 2 4 = 16 16 = 4 (mod 21). Zauważmy, że każda liczba naturalna k jest sumą potęg dwójki k = j d i 2 i, i=0 gdzie d i {0, 1} to cyfry rozwinięcia dwójkowego k. Powyższe uwagi sugerują następujący algorytm obliczania potęgi a k (mod m). Na początku dwóch kolumn wpisujemy a oraz k Powtarzamy następujący ciąg instrukcji dopóki na końcu drugiej kolumny pojawi się 0. Ostatni wyraz w pierwszej kolumnie podnosimy do kwadratu modulo m Ostatni wyraz drugiej kolumny dzielimy przez 2. Następnie wymnażamy te wyrazy pierwszej kolumny, dla których w drugiej kolumnie jest liczba nieparzysta. Jak widać algorytm ten jest podobny do algorytmu mnożenia z poprzedniego rozdziału. Przykład 1.50 Poniższa tabela ilustruje działanie algorytmu podczas obliczania 8 5 (mod 21). Do kolumn z wartściami a i k dodaliśmy na poczatku kolumnę z numerem rzędu. i a k 0 8 5 1 1 2 2 1 1 3 1 0
1.17. Pierwiastki kwadratowe 29 Teraz należy wymnożyć wartości z pierwszej kolumny, które znajdują się w zerowym, i drugim rzędzie, czyli 8 5 = 8 1 = 8 (mod 5). Zauważmy, że w i-tym wierszu pierwszej kolumny mamy potęgę 2 2i. Jeżeli wyraz w drugiej kolumnie jest nieparzysty to i-ty bit rozwinięcia k jest równy d i = 1. Poniżej mamy powyższy algorytm w pseudo Pascalu. Algorytm szybkiego potęgowania Dane wejściowe: podstawa a oraz wykładnik k. Dane wyjściowe: Potęga a k mod n potega := 1 dopóki b > 0 wykonuj jeżeli b mod 2 = 1 to iloczyn := (potega a) mod n; a := (a a) mod n; b := b 2; Zauważmy, że wyniki pośrednie, i ostateczny, należą do Z m i algorytm nie potrzebuje zbyt dużej pamięci. Algorytmu tego nie można stosować do obliczania a k w liczbach całkowitych, jeżeli k jest duże. Wtedy wynik ostateczny oraz pośrednie będą zbyt duże, żeby mógł się zmieścić w pamięci komputera. 1.17 Pierwiastki kwadratowe Definicja 1.51 Liczbę y nazywamy pierwiastkiem kwadratowym liczby x w pierścieniu Z m, jeżeli x = y 2 (mod m). Przykład 1.52 W Z 5 pierwiastkami 4 sa 2 i 3, ponieważ 2 2 = 3 2 = 4 (mod 5) a liczba 2 nie posiada pierwiastka. Zauważmy, że jeżeli y 2 = x (mod m) to (m y) 2 = m 2 2my + y 2 = y 2 = x (mod m), czyli m y = y (mod m), też jest pierwiastkiem x. Lemat 1.53 Jeżeli m jest liczba pierwsza i x = y 2, to y i y sa jedynymi pierwiastkami z x. Dowód Jeżeli z 2 = y 2 (mod m), to m dzieli z 2 y 2 = (z y)(z + y), a ponieważ m jest pierwsze to m dzieli z y lub z + y. W pierwszym przypadku z = y (mod m), w drugim z = y (mod m).
30 Rozdział 1. Teoria liczb Przykład 1.54 Tak nie musi być, jeżeli m nie jest liczba pierwsza. Na przykład w Z 15 mamy cztery pierwiastki z 1, sa to 1, 4, 11 i 14. Ogólnie rozważmy liczbę m która jest iloczynem dwóch różnych liczb pierwszych p > q > 2. Weźmy teraz dowolną liczbę y, dla której oraz Wtedy y mod p = 1 lub y mod p = 1 y mod q = 1 lub y mod q = 1 y 2 mod p = 1 oraz y 2 mod q = 1 czyli z chińskiego twierdzenia o resztach wynika, że y 2 = 1 (mod pq). Ponieważ p > q > 2, to 1 1 (mod p) oraz 1 1 (mod q) i mamy wtedy cztery różne pierwiastki z 1, y 1, y 2, y 3, y 4. Są to liczby dla których y 1 mod p = 1, y 1 mod q = 1, y 2 mod p = 1, y 2 mod q = 1, y 3 mod p = 1, y 3 mod q = 1, y 4 mod p = 1 y 4 mod q = 1. Zauważmy, że y 1 = 1 (mod n) oraz y 4 = 1 (mod n). 1.18 Funkcja Eulera Definicja 1.55 Funkcja Eulera, jest to funkcja, która liczbie m przypisuje φ(m) liczbę elementów odwracalnych w Z m. Z definicji przyjmujemy φ(1) = 1. Przykład 1.56 φ(8) = 4, bo w Z 8 odwracalne sa {1, 3, 5, 7}. Podobnie φ(2) = 1, φ(3) = 2, φ(4) = 2, φ(6) = 2, φ(9) = 6. Lemat 1.57 a) Jeżeli p jest liczba pierwsza, to dla dowolnego α 1, φ(p α ) = p α 1 (p 1). W szczególności φ(p) = p 1. b) Jeżeli m i n sa względnie pierwsze, to φ(m n) = φ(m) φ(n) Dowód: a) Zauważmy że, wśród liczb 0,..., p α względnie pierwsze z p α nie są te, które są podzielne przez p, jest ich pα p = pα 1, czyli φ(p α ) = p α p α 1 = p α 1 (p 1).
1.19. Małe twierdzenie Fermata 31 b) Najpierw zauważmy, ze dla dowolnej liczby x, 0 x < mn wtedy i tylko wtedy gdy NW D(x, mn) = 1 NW D(x, m) = 1 oraz NW D(x, n) = 1 a to zachodzi wtedy i tylko wtedy gdy reszty r m = x mod m oraz r n = x mod n spełniają warunki NW D(r m, m) = 1 oraz NW D(r n, n) = 1 (1.8) Par reszt (r m, r n ) spełniających warunek (1.8) jest φ(m) φ(n), a z chińskiego twierdzenia o resztach każdej liczbie x, 0 x < mn odpowiada dokładnie jedna para reszt, i na odwrót każdej parze reszt odpowiada jedna liczba. Tak więc liczb względnie pierwszych z mn jest φ(m) φ(n). 1.19 Małe twierdzenie Fermata Twierdzenie 1.58 (Fermata) Niech a Z m, wtedy a φ(m) = 1 (mod m). Dowód Niech a 1, a 2,..., a φ(m) to będą wszystkie elementy Z m. Jeżeli pomnożymy je przez a aa 1, aa 2,..., aa φ(m) to zgodnie z lematem 1.35 otrzymamy te same elementy tylko w innej kolejności. Wymnóżmy teraz elemnty obu ciągów φ(m) i=1 a i = φ(m) i=1 φ(m) aa i = a φ(m) i=1 a i (mod m). Po pomnożeniu przez odwrotność φ(m) i=1 a i otrzymamy tezę twierdzenia. Wniosek 1.59 Jeżeli p jest liczba pierwsza, to dla każdego a względnie pierwszego z p mamy a p 1 = 1 (mod p).
32 Rozdział 1. Teoria liczb 1.20 Szyfry RSA W szyfrach one-pad opisanych w rozdziale o funkcjach boolowskich klucz do szyfrowania jest ten sam co klucz do deszfrowania. W szyfrach liniowych wprawdzie klucze do szyfrowania i deszyfrowania są różne, ale jaden łatwo można wyliczyć z drugiego. Takie szyfry nazywamy symetrycznymi. Teraz zapoznamy się ze sposobem szyfrowania, w których klucz do szyfrowania może być jawny, nawet ogłaszany publicznie, a klucz do deszyfrowania jest tajny i jest praktycznie niemożliwe wyliczenie klucza tajnego z klucza jawnego. Sposób ten zaproponowali Rivest, Shamir i Adleman. Przypuśćmy, że Alicja chce utworzyć swój klucz. Bierze w tym celu dwie duże liczby pierwsze p i q, każda może zawierać po kilkaset bitów. Tworzy ich iloczyn n = pq. Funkcja Eulera φ(n) = (p 1)(q 1). Następnie Alicja losuje liczbę e, która jest względnie pierwsza z φ(n). Skoro NW D(e, φ(n)) = 1 to istnieje liczba d, taka, że ed = 1 (mod φ(n)). Teraz para (e, n) jest jawnym kluczem Alicji i może być publicznie ogłoszona. Para (n, d) jest kluczem prywatnym Alicji, nie powinna go ona nikomu zdradzać. Alicja nie powinna też zdradzać rozkładu liczby n na czynniki. Jeżeli ktoś zna p i q, to może wyliczyć φ(n) oraz d. Przypuśćmy, że Bob chce przesłać Alicji jakąś zaszyfrowaną wiadomość x. Traktujemy tę wiadomość jako liczbę x < n. (Jeżeli wiadomość jest ciągiem znaków, to kodujemy każdy znak jako 8 bitów i cały ciąg może być traktowany jako liczba w postaci dwójkowej.) Bob szyfruje wiadomość przy pomocy funkcji szyfrującej C A (x) = x e mod n i przesyła ją Alicji. Alicja odszyfrowuje za pomocą funkcji deszyfrującej D A (y) = y d mod n. Pokażemy teraz, że jeżeli NW D(x, n) = 1, to Mamy D A (C A (x)) = x. D A (C A (x)) = x ed mod n. Ale ed = 1 (mod φ(n)), więc istnieje k takie, że ed = 1 + kφ(n), czyli D A (C A (x)) = x 1+kφ(n) = x x kφ(n) (mod n) ale ponieważ NW D(x, n) = 1, więc mamy x kφ(n) = (x φ(n) ) k = 1 (mod n). Tak więc D A (C A (x)) = x. W powyższym rozumowaniu zakładaliśmy, że NW D(x, n) = 1. Ale gdy ktoś trafi na wiadomość x, która nie jest względnie pierwsza z n, to Alicja ma pecha, ponieważ wtedy można dokonać rozkładu liczby n i złamać jej szyfr. Łatwo też można pokazać, że C A (D A (x)) = x.
1.21. Testy pierwszości 33 Niesymetryczne szyfry dają nowe możliwości. Można ich na przykład używać do podpisu. Aby podpisać jakąś wiadomość m, Alicja szyfruje ją swoim szyfrem prywatnym D A (m) i jest to podpis wiadomości m. Alicja wysyła Bobowi parę (m, D A (m)). Żeby sprawdzić, że wszystko się zgadza Bob szyfruje podpis publicznym kluczem Alicji i sprawdza czy C A (D A (m)) = m. 1.21 Testy pierwszości W tym rozdziale zajmiemy się zagadnieniem jak sprawdzić, czy liczba n jest pierwsza. Możemy sobie wyobrazić, że n ma kilkaset bitów. Jak widać z poprzedniego rozdziału duże liczby pierwsze mogą być przydatne. 1.21.1 Test naiwny Najprostszy sposób to, dzielić n przez kolejne liczby (pierwsze) aż do n. Jednak ten test jest zupełnie niepraktyczny, jeżeli n ma kilkaset bitów. 1.21.2 Test Fermata Drugi test jest algorytmem probabilistycznym i opiera się na twierdzeniu Fermata 1.58. Losujemy liczbę a < n i najpierw sprawdzamy, czy NW D(a, n) = 1. Jeżeli a i n nie są względnie pierwsze, i NW D(a, n) = d > 1, to d jest dzielnikiem n i n nie jest pierwsza. Jeżeli NW D(a, n) = 1, to obliczamy a n 1 mod n. Jeżeli a n 1 1 (mod n), to orzekamy, że n jest liczbą złożoną. Jeżeli a n 1 = 1 (mod n), to orzekamy, że liczba n jest pierwsza. Zauważmy, że jeżeli wylosujemy liczbę a, dla której a n 1 1 (mod n), to wtedy mamy pewność, że n nie jest liczbą pierwszą. Wynika to bezpośrednio z twierdzenia Fermata1.58. Jeżeli jednak wylosujemy liczbę a względnie pierwszą z n, dla której a n 1 = 1 (mod n), to wtedy możemy popełnić błąd. Liczba n może być złożona, a mimo to wylosujemy pechowo i a n 1 = 1 (mod n). Przykład 1.60 W przykładzie 1.50 pokazano, że 8 5 = 8 (mod 21). Z tego wynika, że 8 10 = 8 2 = 1 (mod 21) oraz, że 8 20 = 1 (mod 21). Definicja 1.61 Taka liczbę a, dla której NW D(a, n) = 1 oraz a n 1 1 (mod n) będziemy nazywać świadkiem złożoności dla n, ponieważ zaświadcza ona, że n jest złożona. Przykład 1.62 Jak pokazano wyżej 8 nie jest świadkiem złożoności dla 21. W przykładzie 1.49 pokazaliśmy, że 2 20 = 4 (mod 21), czyli 2 jest świadkiem złożoności liczby 21. Zachodzi następujący lemat.
34 Rozdział 1. Teoria liczb (mod n), to przynajmniej poło- Lemat 1.63 Jeżeli istnieje takie a Z n, że an 1 1 wa elementów Z n jest świadkiem Fermata dla n. Dowód. Przypuśćmy, że {b 1,..., b k } są to wszystkie elementy Z n, dla których bn 1 i = 1 (mod n). Wtedy po pomnożeniu przez a otrzymamy k elementów {ab 1,..., ab k } różnych między sobą (lemat 1.35), z których każdy jest świadkiem Fermata. Rzeczywiście (ab i ) n 1 = a n 1 b n 1 i = a n 1 1 (mod n). A więc świadków złożoności jest co najmniej połowa. Jeżeli n jest pierwsze, to z Twierdzenia Fermata, algorytm zawsze orzeknie dobrze. Z lematu 1.63 wynika, że jeżeli n jest złożona i istnieje świadek Fermata dla n, to takich świadków jest co najmniej połowa, i nasz algorytm pomyli się z prawdopodobieństwem 1 2. Prawdopodobieństo, to można zmniejszyć poprzez powtórzenie algorytmu r razy, z różnymi wylosowanymi a. Istnieją jednak liczby złożone n, które nie mają świadków złożoności. Na przykład n = 561. Kłopot bierze się stąd, że 561 = 3 11 17, a 560 = 561 1 dzieli się przez 2 = 3 1, 10 = 11 1 oraz przez 16 = 17 1. Dlatego dla dowolnego a, jeżeli NW D(a, 561) = 1, to a jest względnie pierwsze z 3, 11 i 17 oraz mamy a 560 = (a 2 ) 280 = 1 (mod 3) a 560 = (a 10 ) 56 = 1 (mod 11) a 560 = (a 16 ) 35 = 1 (mod 17) i z chińskiego twierdzenia o resztach wynika, że a 560 = 1 (mod 561) Takie liczby nazywają sie liczbami Carmichaela. Pierwsze trzy z nich to 561, 1105 i 1729. Występują one bardzo rzadko, jest ich tylko 255 wśród liczb mniejszych od 100 000 000. 1.21.3 Test Millera-Rabina Zakładamy, że n jest nieparzyste (2 jest jedyną parzystą liczbą pierwszą). Najpierw sprawdzamy, czy n jest potęgą jakiejś liczby naturalnej. Dla α od 2 do log 2 n sprawdzamy czy n = k α, dla jakiegoś k. W rozdziale o arytmetyce opisano jak za pomocą binary search stwierdzić, czy liczba jest potęgą innej liczby. Jeżeli n jest potęgą, to jest złożona. Ponieważ n jest nieparzyste, to n 1 możemy przedstawić w postaci n 1 = m 2 k.
1.21. Testy pierwszości 35 dla jakiegoś m nieparzystego. Losujemy a < n. Sprawdzamy, czy NW D(a, n) = 1 (jeżeli NW D(a, n) > 1, to n jest złożona). Następnie obliczamy a m mod n. Jeżeli a m mod n = 1, to koniec, stwierdzamy, że n jest pierwsza. Jeżeli a m mod n 1, to obliczamy po kolei a m2 mod n, a m22 mod n,..., a m2k mod n. Zauważmy, że w tym ciągu każda liczba jest kwadratem poprzedniej. Jeżeli wśród tych liczb nie ma jedynki, to z twierdzenia Fermata wynika, że n jest złożona, bo wtedy Jeżeli w tym ciągu jest jedynka, na przykład a m2k = a n 1 1 (mod n). a m2i = 1 (mod n) to patrzymy na poprzedni element x = a m2i 1. Jeżeli x 1, to orzekamy, że n jest liczbą złożoną. Znależliśmy nietrywialny pierwiastek z 1, a z twierdzenia 1.53 wynika, że jest to możliwe tylko wtedy gdy n nie jest pierwsze. Jeżeli x = 1, to orzekamy, że n jest pierwsze. Łatwo więc widać, że jeżeli n jest pierwsze, to test zawsze odpowie prawidłowo, niezależnie od losowania. Wiadomo też, że jeżeli n jest złożona i nie jest potęgą liczby pierwszej, to z prawdopodobieństwem większym niż 1 2 wykryjemy to. Dowód tego faktu wybiega poza zakres tej książki i pomijamy go. Przykład 1.64 Prześledźmy algorytm Millera-Rabina dla n = 21 i a = 8. W przykładzie 1.50 pokazaliśmy, że n 1 = 20 = 5 2 2. 8 5 = 8 (mod 21). Teraz podnosimy 8 do kwadratu i otrzymujemy 8 5 2 = 8 2 = 1 (mod 21). W tym momencie algorytm znalazł nietrywialny pierwiastek 1 i orzeka, że 21 jest liczba złożona. W praktyce stosujemy wszystkie trzy testy na raz. Mając nieparzystą liczbę n, najpierw sprawdzamy, czy dzieli się ona przez kilka kolejnych liczb pierwszych p 1, p 2,..., p d. Dobór d zależy od tego jak duże liczby sprawdzamy. W ten sposób eliminujemy dużą część liczb. Zauważmy, że obliczając iloczyn tych liczb x = d i=1 p i
36 Rozdział 1. Teoria liczb i sprawdzając, czy NW D(x, n) = 1 możemy za jednym razem sprawdzić, czy n dzieli się przez którąś z tych liczb. Po przejściu pierwszego testu stosujemy test drugi, a gdy liczba n go przejdzie stosujemy test trzeci. Ponieważ liczby Carmichaela są dość rzadkie, więc drugi test wyeliminuje większość liczb złożonych. 1.21.4 Losowanie liczb pierwszych Jeżeli chcemy wyklosować liczbę pierwszą to losujemy nieparzystą liczbę, a mastępnie sprawdzamy, czy jest ona pierwsza. Jeżeli nie, to sprawdzamy następne liczby n + 2, n + 4,... 1.22 Zadania 1. Podziel (oblicz ilorazy i reszty) liczb 175 oraz 1754 przez 11. 2. Dla każdej z liczb:x = 8, 8, 120 oraz 120 znajdź liczbę y {0, 1, 2, 3, 4} taką, że x = y (mod 5). 3. Oblicz: a) (50 51 + 15) mod 7, b) 15 36 mod 7; c) 15 3 (37) 3 mod 7. 4. Oblicz: a) 26 4 18 + 2002) mod 5, 5. Oblicz: a) 10 39 mod 11, b) 2 39 mod 5 c) 7 40 mod 10. 6. Przedstaw klasy abstrakcji relacji kongruencji dla m = 6. 7. Jak wyglądają działania dodawania i mnożenia w pierścieniu Z 6 8. W pierścieniu Z 8 wykonaj działania 7 + 6 oraz 7 6. 9. W pierścieniu Z 8 rozwiąż równania: a) 1 + x = 0, b) 1 + x = 2, c) 5 + x = 0, d) 5 + x = 2. 10. Podaj tabliczkę dodawania i mnożenia w ciele Z 7. Podaj elementy odwrotne do 5 i 6 w Z 7. 11. Dla liczb a = 600 i b = 1050 oblicz NW D(a, b) oraz liczby całkowite x i y spełniające równanie xa + yb = NW D(a, b). 12. Oblicz N W D(667, 713). 13. Oblicz N W D(199816, 199819). 14. W pierścieniu Z 5 rozwiąż równania: a) 4 x = 1, b) 4 x = 2. 15. W pierścieniu Z 8 rozwiąż równania: a) 3 x = 1, b) 3 x = 2. 16. W pierścieniu Z 17 rozwiąż równania: a) 8x = 2, b) 9x = 4. 17. W pierścieniu Z 14 rozwiąż równania: a) 6x = 2, b) 6x = 9.