VALIKOITUJA KOHTIA LUKUTEORIASTA ARI LEHTONEN 1. Laajennettu Euleideen algoritmi 1.1. Jaoyhtälö. Oloot r 0, r 1 Z, r 0 r 1 > 0. Tällöin on olemassa ysiäsitteiset luvut q 1 ja r 2 Z siten, että r 0 = q 1 r 1 + r 2 ja 0 r 2 < r 1. Luu q 1 on luujen r 0 ja r 1 oonaisluuosamäärä ja r 2 (oonaisluu-)jaojäännös. Otetaan äyttöön seuraavat funtiot: Oloot x, y R, y 0. Asetetaan (s. [?, 1.2.4] tai [?, 3.1]) x := suurin oonaisluu n siten, että n x (x:n lattia); x := pienin oonaisluu n siten, että n x (x:n atto); x mod y := x y x/y ; x mod 0 := x. Helposti nähdään, että un y > 0, on 0 x mod y < y. Jaoyhtälön osamäärä ja jaojäännös voidaan nyt ilmaista q 1 = r 0 /r 1 ja r 2 = r 0 q 1 r 1 = r 0 r 1 r 0 /r 1 = r 0 mod r 1. 1.2. Euleideen algoritmi. Kun jaoyhtälöä toistetaan, löydetään luvut l, q i, r i N, 1 i l, siten, että 0 r i 1 < r i, un 1 i l, ja r 0 = q 1 r 1 + r 2, (1.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. 1.3. Laajennettu Euleideen algoritmi. Oloot luvut l, q i ja r i uten Euleideen algoritmissa (??). Pyritään etsimään luvut s i ja t i siten, että s i r 0 + t i r 1 = r i aiille 0 i l. Oletetaan alusi, että tällaiset luvut ovat olemassa. Kun tätä oletusta sovelletaan indeseihin i 1, i ja i + 1, saadaan Euleideen algoritmin avulla 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 ) (1.2) = (s i 1 q i s i ) r 0 + (t i 1 q i t i ) r 1. Toisaalta r i+1 muaisesti (1.3) = s i+1 r 0 + t i+1 r 1. Valitaan ertoimet seuraavan palautusaavan s i+1 = s i 1 q i s i, t i+1 = t i 1 q i t i. Päiväys: 1.11.2011. 1
2 ARI LEHTONEN Tällöin yhtälöstä (??) seuraa, että jos s r 0 + t r 1 = r arvoilla = i 1 ja = i ja ertoimet s ja t on määrätty palautusaavojen (??) avulla, niin yhtälö s r 0 +t r 1 = r on voimassa myös, un = i + 1. Riittää siis löytää sopivat aloitusarvot. Tällaiset ovat s 0 = 1, t 0 = 0, s 1 = 0, t 1 = 1. Laajennetussa Euleideen 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, un 1 i l, ja s 0 = 1, t 0 = 0 (1.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 aiille 0 i l ja r l = syt(r 0, r 1 ). Lisätietoa laajennetusta Euleideen algoritmista löytyy irjoista [?, 3.2], [?, 4.5.2]. Huomautus 1.1. Suurimman yhteisen teijän määrääminen Euleideen algoritmilla vaatii enintään 1 + log r 1 / log Θ jaoyhtälöä, missä $Θ := (1 + 5)/2. Hitain tapaus syntyy Fibonaccin luujen ohdalla. Laajennettu Euleideen algoritmi on lasennallisesti tehoas tapa lasea syt(r 0, r 1 ) ja samalla rataista Diofantosen yhtälö x r 0 + y r 1 = syt(r 0, r 1 ). [?, 1.10], [?, 1.2.1]. Esimeri 1.2. Laajennetun Euleideen algoritmi voidaan irjata tauluosi: i r i s i t i 0 126 1 0 1 35 0 1 2 21 1 3 3 14 1 4 4 7 2 7 5 0 5 18 Riviltä i = 4 saadaan r 4 = syt(r 0, r 1 ) = s 4 r 0 + t 4 r 1, eli 7 = syt(126, 35) = 2 126 7 35. 2. Toistettu neliöinti Jos potenssin a n lasetaan potenssin määrittelevän reursion a n := a a n 1, a 1 := a, avulla, tarvitaan n 1 ertolasua. Lasemista voidaan nopeuttaa huomattavasti seuraavasti ([?, 4.3]): 1 Esitetään luu n Z + asiantaisena muodossa n = 2 + d 1 2 1 + + d 1 2 + d 0, missä d 1,..., d 1, d 0 {0, 1}. 2 Asetetaan b := a. 3 Kun j = 1, 2,..., 1, 0, asetetaan { b j := b 2 j+1 a, jos n j = 1, b j := b 2 j+1, muuten. Edellä lasetun jonon viimeinen alio b 0 = a n (todistus jätetään luijan tehtäväsi). Kun potenssi a n lasetaan tällä algoritmilla, tarvitaan = log 2 n neliöintiä ja enintään yhtä monta ertolasua (log 2 n on luvun n asiantainen logaritmi). Kaienaiiaan ertolasujen luumäärä on enintään 2 log 2 n.
VALIKOITUJA KOHTIA LUKUTEORIASTA 3 3. Äärellisen unnan primitiivinen elementti Ryhmän G alion a ertaluu on pienin positiivinen oonaisluu siten, että a = 1, jos tällainen luu on olemassa. Alion a ertaluua meritään ord(a). Alion a virittämä sylinen aliryhmä on a = {a n n Z}. Jos alion a ertaluu on äärellinen, niin a = {1, a, a 2,..., a 1 }. Lemma 3.1. Oloot G äärellinen sylinen ryhmä ja a, b G siten, että niiden ertaluvut ovat esenään jaottomat, syt(ord(a), ord(b)) = 1. Tällöin ord(a b) = ord(a) ord(b). Oloon K äärellinen unta, jossa on p n aliota (K = Z p = Z/pZ, p aluluu 1, tai K = F p n = Galois n unta, jossa on p n aliota, n Z + ). Fermat n pienen lauseen nojalla joainen a K := K \ {0} toteuttaa yhtälön a q 1 = 1. Tästä seuraa, että joaisen alion a K ertaluu on luvun q 1 teijä. Alio g K on unnan K primitiivinen elementti, jos sen ertaluu on q 1. Tällöin siis K = g. Äärellisellä unnalla on aina primitiivinen elementti. Ryhmäteorian ielellä ilmaistuna: multipliatiivinen ryhmä K on sylinen. Itse asiassa, joaiselle luvun q 1 teijälle unnassa K on täsmälleen ϕ() aliota, jona ertaluu on (s. [?, 2.8, 2.20, 2.21]). Tässä ϕ on Eulerin ϕ-funtio, ϕ(n) := jouon { Z 1 n ja syt(, n) = 1} alioiden luumäärä. Erityisesti q-alioisessa unnassa primitiivisiä elementtejä on ϕ(q 1) appaletta. Nämä tuloset todistetaan usein auniin ϕ-funtioaavan avulla: ϕ(d) = n. d n Gaussin algoritmi primitiivisen elementin määräämisesi: 1 Valitaan a 1 K, a 1 0. Oloon t 1 := ord(a 1 ). 2 Jos t 1 = q 1, niin a 1 on unnan K primitiivinen elementti. 3 Jos t 1 < q 1, valitaan b K \ a 1. Oloon s := ord(b). Jos s = q 1, niin b on unnan K primitiivinen elementti. 4 Jos s < q 1, määrätään luvut d ja e Z + siten, että d t 1, e s, syt(d, e) = 1 ja d e = pyj(t 1, s). Asetetaan a 2 := a t 1/d 1 b s/e ja t 2 := pyj(t 1, s). Vaihdetaan edellä alion a 1 tilalle a 2 ja luvun t 1 tilalle t 2, ja toistetaan ohdasta 2. Todistusen sijasta annamme muutaman ommentin: (i) Alion b ertaluu ei voi olla luvun teijä; muutoin olisi b t 1 = 1, jolloin b olisi yhtälön x t 1 1 = 0 juuri. Mutta tällä yhtälöllä on jo t 1 eri juurta a j 1, 1 j t 1. Tästä seuraa myös, että pyj(t 1, s) > t 1. (ii) Kohdan 4 väite luvuille d ja e on yleinen: Kun m Z + ja n Z +, niin on olemassa luvut d ja e siten, että d m, e n, syt(d, e) = 1 ja d e = pyj(m, n). Väite on helppo todistaa esimerisi aritmetiian peruslauseen avulla (ja jätetään luijan tehtäväsi). (iii) Kohdassa 4 alion a t 1/d 1 ertaluu on d ja alion b s/e ertaluu on e. Edellisen lemman nojalla näiden tulon ertaluu on d e = pyj(t 1, s) > t 1. 1 Merintää Z n äytetään usein lyhenteenä oonaisluujen jäännösluoarenaalle Z/nZ. Toisaalta, joissain luuteorian ja algebran esitysissä merintä Z p, un p on aluluu, on varattu ns. p-adisten luujen unnalle, joa on täysin eri asia uin unta Z/pZ. Merintä F p ei aiheuta seaannusta, mutta ei liene ovin yleisesti äytetty jäännösluoaunnan Z/pZ ohdalla.
4 ARI LEHTONEN 3.1. Miten luvut d ja e valitaan, jos m := 150, n := 225, ja on oltava d m, e n, syt(d, e) = 1 ja d e = pyj(m, n)? 3.2. Jos et aiemmin ole osoittanut, niin osoita nyt: Kun p 1,..., p ovat esenään erisuuria aluluuja ja niin 2 m = p m 1 1... p m ja n = p n 1 1... p n, syt(m, n) = p min(m 1,n 1 ) 1... p min(m,n ) ja pyj(m, n) = p max(m 1,n 1 ) 1... p max(m,n ). 3.3. Osoita aritmetiian peruslauseen (tms) avulla, että aiille m, n Z + on olemassa luvut d ja e siten, että d m, e n, syt(d, e) = 1 ja d e = pyj(m, n). 3.4. Oloot a, b, m Z +, m > 1. Osoita, että yhtälöllä a x b mod m on rataisu x Z jos ja vain jos syt(a, m) b. 3.5. Oloon p pariton aluluu ja g unnan Z p primitiivinen alio. Oloon n N, n > 0. Selvitä miten yhtälö x 2 = g n, x Z p, voidaan palauttaa oonaisluujen ongruenssiyhtälösi 2 n mod (p 1), Z. Millä ehdolla yhtälöllä x 2 = g n on rataisu? 4. Neliöjäännöset Oloon p > 2 aluluu. Luu a Z on neliöjäännös modulo p, jos on olemassa b Z siten, että a b 2 mod p. Legendren symboli ( a ertoo ono a neliöjäännös modulo p; taremmin ( a 0, jos a 0 mod p; := 1, jos a on neliöjäännös modulo p; 1, jos a ei ole neliöjäännös modulo p. Legendren symboli on helppo lasea toistetun neliöinnin avulla seuraavan tulosen nojalla (todistus jää luijan tehtäväsi): Lause 4.1. ( a a (p 1)/2 mod p. Yleisemmästä Jacobin symbolista äytetään samaa merintää uin Legendren symbolista, mutta Jacobin symbolissa luvun p ei tarvitse olla aluluu. Jacobin symbolista ei toisaalta saa täreätä tietoa: jos ( a n) = 1, niin a on neliöjäännös modulo n. Jos a on neliöjäännös modulo p ja p 3 mod 4, voidaan alion a neliöjuuri modulo p määrätä helposti toistetun neliöinnin avulla; s.??. Tarastellaan seuraavasi tapausta, missä n on ahden esenään erisuuren aluluvun p ja q tulo, n = p q. Oletetaan, että a on neliöjäännös modulo n. Tällöin a on neliöjäännös modulo p ja modulo q. Oloot c p ja c q luvut, joille c 2 p a mod p ja c 2 q a mod q. 2 Kirjassa [?, 4.5] ehdotetaan varsin nättiä merintää m n taroittamaan luujen m ja n esenään jaottomuutta (eli sitä, että syt(m, n) = 1)! Tämä taroittaisi siis aluluujen p 1,..., p esponenteille ehtoja min(m 1, n 1 ) = 0,..., min(m, n ) = 0, t.s. m 1 n 1 = 0,..., m n = 0.
VALIKOITUJA KOHTIA LUKUTEORIASTA 5 Kosa syt(p, q) = 1, voidaan laajennetun Euleideen algoritmilla avulla määrätä luvut x p ja x q siten, että Oloot x p p + x q q = syt(p, q) = 1. r := c q x p p + c p x q q mod n ja s := c q x p p c p x q q mod n Harjoitustehtäväsi jää osoittaa, että luvut ±r mod n ja ±s mod n (aii neljä) ovat luvun a neliöjuuria modulo n. 4.1. Oloon p aluluu siten, että p 3 mod 4. Oletetaan, että a on neliöjäännös modulo p. Osoita, että c := a (p+1)/4 on luvun a neliöjuuri modulo p, t.s. c 2 a mod p. 4.2. Oloon p pariton aluluu, ja a Z p, a 0. Osoita, että aliolla a on neliöjuuri, jos ja vain jos a (p 1)/2 = 1. [Vihje: Osoita alusi, että yhtälöllä x 2 = 1 on unnassa Z p täsmälleen asi rataisua, x = 1 ja x = 1; tehtävä?? saattaa myös auttaa.] 4.3. Oloon p > 2 aluluu. Osoita, että unnassa Z p on tasan (p 1)/2 nollasta eroavaa aliota, joilla on neliöjuuri unnassa Z p, ja tasan (p 1)/2 aliota, joilla ei ole. Viitteet [1] Johannes A. Buchmann: Introduction to cryptography, Undergraduate Texts in Mathematics, Springer, 2001. [2] Joachim von zur Gathen ja Jürgen Gerhard: Modern computer algebra. Cambridge University Press, 1999. [3] Ronald L. Graham, Donald E. Knuth ja Oren Patashni: Concrete mathematics: A foundation for computer science. toinen laitos, Addison-Wesley, 1994. [4] Lars Gårding ja Torbjörn Tambour: Algebra for computer science. Universitytext, Springer-Verlag, 1988. [5] Donald E. Knuth: The art of computer programming, Vol. 1, Fundamental algorithms. Addison-Wesley, 1968; olmas laitos, 1997. [6] Donald E. Knuth: The art of computer programming, Vol. 2, Seminumerical algorithms. Addison-Wesley, 1969; olmas laitos, 1998. [7] Neal Koblitz: A course in number theory and cryptography, toinen laitos, Springer, 1994. [8] Robert J. McEliece: Finite fields for computer sciencists and engineers, Kluwer Acaademic Publishers, 1987. [9] Frithiof Nevanlinna: Einführung in die Algebra und die Theorie der algebraischen Gleichungen, Birhäuser Verlag, 1965.