0. Kertausta ja täydennystä Kurssille Äärelliset kunnat tarvittavat esitiedot löytyvät Algebran kurssista [Alg]. Hyödyksi voivat myös olla (vaikka eivät välttämättömiä) Lukuteorian alkeet [LTA] ja Salakirjoitukset [Sala]. 0.1. Merkintöjä. Z: kokonaislukujen joukko Z + : = {k Z k > 0} Z : = {k Z k < 0} N: = {k Z k 0} Z n : kokonaislukujen jäännösluokkien modulo n muodostama rengas 2 A : äärellisen joukon A alkioiden lukumäärä R : renkaan R kääntyvien alkioiden joukko; R kertolaskulla varustettuna on ryhmä (esimerkiksi Z = {±1}, Q = Q \ {0}) F q : kunta, jossa on q alkiota; myöhemmin tullaan osoittamaan, että jos tällainen kunta on olemassa, on se isomorfismia vaille yksikäsitteinen; erityisesti F p = Z p, kun p on alkuluku (ja F p Z p, kun p ei ole alkuluku). 0.2. Lukujen suurin yhteinen tekijä. Eukleideen algoritmi on kokonaislukujen jakoyhtälöä käyttävä menetelmä, jolla voidaan määrätä kahden kokonaisluvun a, b Z suurin yhteinen tekijä d = syt(a, b). 3 Kerrattakoon määritelmiä ja eräitä merkintöjä. Määritelmä 0.1. Olkoot a, b, c ja d Z. Sanotaan, että c jakaa luvun a, jos on olemassa k Z siten, että a = k c; tällöin merkitään c a. Luku c on lukujen a ja b yhteinen tekijä, jos c a ja c b. Luku d on lukujen a ja b suurin yhteinen tekijä, jos d on lukujen a ja b yhteinen tekijä ja lisäksi pätee: jos c a ja c b, niin c d. Huomautus 0.2. Lukujen jaollisuus on järjestysrelaatio positiivisten kokonaislukujen joukossa Z + (tai yhtä hyvin kaikkien kokonaislukujen joukossa Z). Kaikkia lukupareja ei jaollisuuden perusteella voi asettaa järjestykseen (esimerkiksi 4 6 ja 6 4), mutta jaollisille luvuille jaollisuusjärjestys vastaa lukujen tavallista suuruusjärjestystä: jos a Z + ja b Z + ovat jaollisia keskenään, on a b, jos ja vain jos a b. Muistettakoon, että järjestysrelaatio (tarkemmin osittainen järjestys) joukossa X on on binäärinen relaatio, jolle on voimassa (i) x x kaikille x X (refleksiivisyys) (ii) jos x y ja y x, niin x = y (antisymmetrisyys) (iii) jos x y ja y z, niin x z (transitiivisuus) 1 Viimeksi muutettu 2.9.2013. 2 Algebraa ja lukuteoriaa käsittelevissä kirjoissa merkintää Z p saatetaan käyttää ns. p-adisten lukujen joukolle. Tällöin kokonaislukujen jäännösluokkarenkaille modulo n käytetään merkintää Z/nZ. 3 Suomen kielisessä matemaattisessa tekstissä suurimmalle yhteiselle tekijälle käytetään useimmiten suomen kielistä lyhennettä syt(a, b). Englanninkielisissä teksteissä käytetään gcd(a, b), greatest common divisor, saksankielisissä ggt(a, b), gröster gemeinsamer Teiler, ja ranskankielisissä pgcd(a, b), plus grand commun diviseur. Osa vanhempaa kirjallisuutta tyytyy lyhennettyyn merkintään (a, b), mikä pitää pitää erillään järjestystä parista ja lukusuoran avoimesta välistä. Lisäsekaannusta voi aiheuttaa, että kokonaislukujen a ja b virittämälle ideaalille {s a + t b s, t Z} käytetään myös merkintää (a, b). 1
Järjestys on täydellinen, jos jokaiselle parille x, y X on voimassa x y tai y x (vertailtavuus). Tässä jaollisuuden avulla määritelty järjestysrelaatio on siis osittainen, mutta ei täydellinen järjestys joukossa Z. Kokonaislukujen tavallinen järjestysrelaatio määritellään seuraavasti: x y, jos on olemassa z N siten, että y = x + z. Tämä on täydellinen järjestys. Suurin yhteinen tekijä on siis jaollisuusjärjestyksen mielessä yhteisistä tekijöistä suurin. 0.3. Eukleideen algoritmi. Olkoot r 0, r 1 N, r 1 0. Kokonaislukujen jakoyhtälön nojalla on olemassa yksikäsitteiset luvut q 1 ja r 2 N siten, että r 0 = q 1 r 1 + r 2 ja 0 r 2 < r 1. Luku q 1 on lukujen r 0 ja r 1 kokonaislukuosamäärä ja r 2 (kokonaisluku-)jakojäännös. Merkitään rem(r 0, r 1 ) := r 2. Otetaan käyttöön seuraavat funktiot: Jokaiselle x R asetetaan (ks. [19, 1.2.4] tai [18, 3.1] 4 ) x := suurin kokonaisluku n siten, että n x (luvun x lattia); x := pienin kokonaisluku n siten, että n x (luvun x katto). Jakoyhtälön osamäärä ja jakojäännös voidaan nyt ilmaista q 1 = r 0 /r 1, kun r 1 0, ja r 2 = rem(r 0, r 1 ) = r 0 q 1 r 1 = r 0 r 1 r 0 /r 1. Kun jakoyhtälöä toistetaan vaihtamalla jaettavan paikalle jakaja ja valitsemalla uudeksi jakajaksi saatu jakojäännös, löydetään luvut l, q i, r i N, 1 i l, siten, että 0 r i 1 < r i, kun 1 i l, ja r 0 = q 1 r 1 + r 2, (0.1) r 1 = q 2 r 2 + r 3,. r l 2 = q l 1 r l 1 + r l, r l 1 = q l r l + 0. Väite 0.3. Eukleideen algoritmilla (0.1) saatu luku r l, eli viimeinen nollasta eroava jakojäännös, on lukujen r 0 ja r 1 suurin yhteinen tekijä, r l = syt(r 0, r 1 ). Suurin yhteinen tekijä voidaan myös karakterisoida seuraavasti: syt(r 0, r 1 ) on joukon {s r 0 +t r 1 s, t Z} pienin positiivinen luku. Erityisesti siis on olemassa s, t Z siten, että syt(r 0, r 1 ) = s r 0 + t r 1. (Tämä yhtälö tunnetaan Bézout n yhtälönä.) 2 Todistus. Tuloksen pitäisi olla tuttu Lukuteorian alkeet -kurssilta [LTA]. Esimerkki 0.4. Eukleideen algoritmi luvuille 126 ja 35: 126 = 3 35 + 21, 35 = 1 21 + 14, 21 = 1 14 + 7, 14 = 2 7. 4 Vanhemmassa kirjallisuudessa luvun x lattialle käytetään merkintää [x].
3 Kertoimet s ja t löydetään takaperin laskemalla : syt(126, 35) = 7 = 21 1 14, = 21 (35 1 21), = (126 3 35) (35 (126 3 35)), = 2 126 7 35. Tämä menetelmä kertoimien määräämiseksi ei ole kuitenkaan kovin käyttökelpoinen tietokoneella laskettaessa, päinvastoin; Eukleideen algoritmista saatavat välivaiheet pitäisi tallettaa muistiin, jotta niitä voitaisiin käyttää kertoimien s ja t määräämiseen edellisen esimerkin mukaisesti. Kertoimet s ja t voidaan kuitenkin määrätä suoraan käyttämällä ns. laajennettua Eukleideen algoritmia. 0.4. Laajennettu Eukleideen algoritmi. Olkoot luvut l, q i ja r i kuten Eukleideen algoritmissa (0.1). Pyritään etsimään luvut s i ja t i siten, että s i r 0 + t i r 1 = r i kaikille 0 i l. Oletetaan aluksi, että tällaiset luvut ovat olemassa. Kun tätä oletusta sovelletaan indekseihin i 1, i ja i + 1, saadaan Eukleideen algoritmin avulla (0.2) r i+1 = r i 1 q i r i = (s i 1 r 0 + t i 1 r 1 ) q i (s i r 0 + t i r 1 ) = (s i 1 q i s i ) r 0 + (t i 1 q i t i ) r 1. Toisaalta r i+1 = s i+1 r 0 + t i+1 r 1. Valitaan kertoimet seuraavan palautuskaavan mukaisesti { si+1 = s i 1 q i s i, (0.3) t i+1 = t i 1 q i t i. Tällöin yhtälöstä (0.2) seuraa, että jos s k r 0 + t k r 1 = r k arvoilla k = i 1 ja k = i ja kertoimet s k ja t k on määrätty palautuskaavojen (0.3) avulla, niin yhtälö s k r 0 +t k r 1 = r k on voimassa myös, kun k = i + 1. Riittää siis löytää sopivat aloitusarvot. Tällaiset ovat s 0 = 1, t 0 = 0, s 1 = 0, t 1 = 1. Laajennetussa Eukleideen algoritmissa määrätään luvut l, q i, r i N, s i, t i Z, 1 i l, siten, että 0 r i 1 < r i, kun 1 i l, ja s 0 = 1, t 0 = 0 (0.4) s 1 = 0, t 1 = 1 r i 1 = q i r i + r i+1 s i 1 = q i s i + s i+1 t i 1 = q i t i + t i+1 Tällöin s i r 0 + t i r 1 = r i kaikille 0 i l ja r l = syt(r 0, r 1 ). Lisätietoa laajennetusta Eukleideen algoritmista löytyy kirjoista [1, 3.2], [20, 4.5.2]. Esimerkki 0.5. Käydään läpi edellisen esimerkin lasku laajennetulla Eukleideen algoritmilla. Riveillä i = 0 ja i = l + 1 oleville suureille q i ei ole määritelty arvoa ja ne on merkitty viivalla:
4 i r i q i s i t i 0 126 1 0 1 35 3 0 1 2 21 1 1 3 3 14 1 1 4 4 7 2 2 7 5 0 5 18 Riviltä i = 4 saadaan r l = syt(r 0, r 1 ) = s l r 0 + t l r 1, eli 7 = syt(126, 35) = 2 126 7 35. Joissakin yksinkertaistetuissa esityksissä saatetaan sanoa, että kahden luvun suurin yhteinen tekijä määrätään jakamalla luvut alkutekijöihin ja poimimalla näistä yhteiset tekijät. Käytännössä näin voi menetellä kuitenkin vain (pienen) pienten lukujen kohdalla, koska suurille luvuille ei tunneta yhtään nopeaa tekijöihinjakomenetelmää. Eukleideen algoritmi on nopea. Seuraava lause kertoo kvantitatiivisesti, kuinka nopeasti suurin yhteinen tekijä voidaan löytää. Lause 0.6. Olkoot r 0, r 1 Z, 0 < r 1 < r 0, ja l Eukleideen algoritmin (0.1) rivien lukumäärä. Tällöin l log r 1 + 1, missä φ := 1+ 5. log φ 2 Todistus. Voidaan olettaa, että r l = syt(r 0, r 1 ) = 1. Nimittäin, jos Eukleideen algoritmin (0.1) rivit kerrotaan puolittain positiivisella kokonaisluvulla c, nähdään että lukupariin (c r 0, c r 1 ) liittyvät Eukleideen algoritmin jakojäännökset ovat luvut c r i. Siis syt(c r 0, c r 1 ) = c syt(r 0, r 1 ) ja kummankin lukuparin, (c r 0, c r 1 ) ja (r 0, r 1 ), Eukleideen algoritmissa on täsmälleen yhtä monta riviä. Jos olisi r l > 1, voitaisiin lukuparin (r 0, r 1 ) suuurin yhteinen tekijä laskea lukuparin (r 0 /r l, r 1 /r l ) avulla niin, että Eukleideen algoritmin rivien lukumäärä ei muutu. Olkoon siis r l = 1. Osoitetaan induktiolla, että (0.5) r i φ l i, kun 0 i l. Tästä epäyhtälöstä saadaan erityisesti r 1 φ l 1, joten ottamalla puolittain logaritmit saadaan Väitetty epäyhtälö seuraa tästä. log r 1 (l 1) log φ. Epäyhtälön (0.5) todistus: Kun i = l, on r l = 1 = φ 0. Epäyhtälö (0.5) on siis voimassa ainakin, kun i = l. Ennenkuin jatketaan, todetaan että Eukleideen algoritmin (0.1) osamäärille q i on voimassa q i 1, kun 1 i l 1, ja q l 2. Nimittäin, Eukleideen algoritmin (0.1) nojalla r i 1 = q i r i + r i+1, ja koska r i+1 < r i < r i 1, on oltava q i 0. Jos olisi q l = 1, saataisiin Eukleideen algoritmin (0.1) viimeiseltä riviltä r l 1 = r l, mikä ei ole mahdollista. Siis q l 2. Koska 5 < 9, on φ < 1+ 9 2 = 2, joten edellisen nojalla saadaan r l 1 = q l r l = q l 2 > φ. Olkoon nyt 0 k l 2, ja oletetaan, että väitetty epäyhtälö (0.5) on tosi kaikille indekseille i > k.
5 Koska q k+1 1, saadaan induktio-oletuksen nojalla r k = q k+1 r k+1 + r k+2 r k+1 + r k+2 ( φ l (k+1) + φ l (k+2) = φ l (k+1) 1 + 1 ) = φ l k. φ Siis epäyhtälö (0.5) on tosi myös indeksille i = k. Huomautuksia 0.7. a) Voidaan osoittaa, että Eukleideen algoritmille (0.1) hitain tapaus, siis sellainen jossa tarvitaan eniten rivejä, on Fibonaccin luvuista F n saatava aloitus. Asetetaan F 0 := 0, F 1 := 1 ja F n := F n 1 + F n 2, kun n 2. Tällöin luvuille r 0 := F n+2 ja r 1 := F n+1 Eukleideen algoritmissa (0.1) on l = n riviä. Ks. [20, 4.5.3, Thm. F]. b) Eukleideen algoritmi kahden luvun suurimman yhteisen tekijän määrämiseksi on nopea, koska logaritmi kasvaa hyvin hitaasti. Esimerkiksi, jos r 1 = 10 100 (=googol), Eukleideen algoritmissa tarvitaan enintään 479 riviä (eli jakoyhtälöä). 0.5. Modulaariaritmetiikkaa. Olkoon n Z, n 2. Sanotaan, että luvut a Z ja b Z ja ovat kongruentteja keskenään modulo n, jos a b on jaollinen luvulla n; tällöin merkitään a b mod n. Luku n on kongruenssin moduli. 5 Lukujen kongruenssi on ekvivalenssirelaatio, t.s. kaikille kokonaisluvuille a, b, c on voimassa a) a a mod n (refleksiivisyys); b) jos a b mod n, niin b a mod n (symmetrisyys); c) jos a b mod n ja b c mod n, niin a c mod n (transitiivisuus). Ekvivalenssirelaation avulla tarkasteltavat alkiot jaetaan ekvivalenssiluokkiin. Kongruenssirelaation tapauksessa luvun a määräämä ekvivalenssiluokka on joukko [a] n := {b Z b a mod n}. Joukkoa [a] n kutsutaan (luvun a määräämäksi) jäännösluokaksi modulo n. Kaikkien jäännösluokkien modulo n joukkoa merkitään Z n tai Z/nZ. Koska b a mod n, jos ja vain jos b a = k n jollekin k Z, on [a] n = {..., a 2 n, a n, a, a + n, a + 2 n,...}. Ekvalenssirelaatioiden yleisten omaisuuksien nojalla luvuille a ja b on [a] n = [b] n, jos ja vain jos a b mod n. Kun jakoyhtälössä jakajaksi valitaan luku n, saadaan a = q n + r, missä q, r Z ja 0 r < n. Siis r = rem(a, n) ja a r mod n, joten [a] n = [r] n = [rem(a, n)] n. Jokaiselle jäännösluokalle [a] n löytyy siis yksi ja vain yksi edustaja r, jolle on voimassa 0 r < n. Kokonaislukujen kongruenssille on voimasssa seuraavat laskusäännöt: Olkoot a, a, b, b Z. Tällöin (i) jos a b mod n ja a b mod n, niin a + a b + b mod n; (ii) jos a b mod n ja a b mod n, niin a a b b mod n. Edellisen nojalla jäännösluokille voidaan määritellä yhteen- ja kertolasku asettamalla [a] n + [a ] n := [a + a ] n, [a] n [a ] n := [a a ] n. 5 Merkinnän a b mod n sijasta kirjallisuudesta saattaa löytää myös merkinnät a b (mod n) ja a b (n).
Näin määritellyille laskutoimituksille on voimasssa: (i) [a] n + [b] n = [b] n + [a] n (yhteenlaskun kommutatiivisuus) (ii) ([a] n + [b] n ) + [c] n = [a] n + ([b] n + [c] n ) (yhteenlaskun assosiatiivisuus) (iii) [a] n [b] n = [b] n [a] n (kertolaskun kommutatiivisuus) (iv) ([a] n [b] n ) [c] n = [a] n ([b] n [c] n ) (kertolaskun assosiatiivisuus) (v) ([a] n + [b] n ) [c] n = [a] n [c] n + [b] n [c] n (distribuutiivisuus) Lisäksi a) yhteenlaskulle on olemassa neutraalialkio (nolla-alkio) [0] n, jolle [a] n +[0] n = [a] n kaikille [a] n Z n ; b) yhteenlaskussa jokaisella [a] n Z n on vasta-alkio [ a] n, jolle [a] n + [ a] n = [0] n ; c) kertolaskulle on olemassa neutraalialkio (ykkösalkio) [1] n, jolle [a] n [1] n = [a] n kaikille [a] n Z n. Sen sijaan kertolaskussa kaikilla alkioilla [a] n Z n ei välttämättä ole käänteisalkiota [b] n, jolle olisi [a] n [b] n = [1] n. Esimerkiksi, jos n = 4 ja a = 2, on [2] 4 [0] 4 = [0] 4 [1] 4. [2] 4 [1] 4 = [2] 4 [1] 4. [2] 4 [2] 4 = [4] 4 = [0] 4 [1] 4 ja [2] 4 [3] 4 = [6] 4 [2] 4 [1] 4. Sanotaan, että alkio [a] n Z n on kääntyvä, jos on olemassa alkio [b] n Z n siten, että [a] n [b] n = [1] n. Jos tällainen alkio [b] n on olemassa, sitä sanotaan alkion [a] n käänteisalkioksi ja merkitään [a] 1 n. Sanotaan myös, että kokonaisluku a on kääntyvä modulo n, jos alkio [a] n Z n on kääntyvä, t.s. jos on olemassa kokonaisluku b siten, että a b 1 mod n. Laajennetun Eukleideen algoritmin avulla voidaan todistaa seuraava tärkeä Lause 0.8. Alkio [a] n Z n on kääntyvä, jos ja vain jos syt(a, n) = 1. Jos syt(a, n) = 1, alkion [a] n käänteisalkio löydetään laajennetun Eukleideen algoritmin avulla. Todistus. Oletetaan aluksi, että [a] n on kääntyvä. Tällöin on olemassa [b] n Z n siten, että [a] n [b] n = [1] n. Jäännösluokkien edustajille a ja b tämä tarkoittaa, että a b 1 mod n, joten a b = 1 + k n jollekin kokonaisluvulle k. Olkoon s := syt(a, n). Tällöin s a ja s n, joten s (a b k n). Siis s 1, joten s = 1. Oletetaan kääntäen, että syt(a, n) = 1. Sovelletaan laajennettua Eukleideen algoritmia lukuihin r 0 = n ja r 1 = a. Algoritmin avulla löydetään luvut l, r i N, s i, t i Z, 1 i l, siten, että s i r 0 + t i r 1 = r i kaikille 0 i l ja r l = syt(r 0, r 1 ). Erityisesti on s l r 0 + t l r 1 = r l = syt(r 0, r 1 ), t.s. s l n + t l a = 1. Tästä seuraa, että t l a 1 mod n, joten alkio [t l ] n on alkion [a] n käänteisalkio. Huomautus 0.9. On samantekevää lasketaanko jäännösluokilla tai niiden edustajilla, kunhan jälkimmäisessä tapauksessa yhtäsuuruus korvataan kongruenttisuudella (tarpeen mukaan). Esimerkiksi [4] 7 [3] 7 = [4 3] 7 = [12] 7 = [5] 7 ja 4 3 = 12 5 mod 7 tarkoittavat molemmat samaa. Jälkimmäisessä ensimmäinen yhtäsuuruus 4 3 = 12 on yhtäsuuruus, mutta jälkimmäinen kohta ei ole 12 = 5. 6