MATEMAATTINEN KRYPTOLOGIA. Keijo Ruohonen



Samankaltaiset tiedostot
Lukuteorian kertausta

a b 1 c b n c n

Matematiikan mestariluokka, syksy

3. Kongruenssit. 3.1 Jakojäännös ja kongruenssi

811120P Diskreetit rakenteet

ALKULUKUJA JA MELKEIN ALKULUKUJA

PERUSASIOITA ALGEBRASTA

Tekijä Pitkä Matematiikka 11 ratkaisut luku 2

MAT Algebra I (s) periodilla IV 2012 Esko Turunen

LUKUTEORIAN ALKEET HELI TUOMINEN

LUKUTEORIA johdantoa

TAMPEREEN YLIOPISTO Pro gradu -tutkielma. Liisa Ilonen. Primitiiviset juuret

Merkitse kertolasku potenssin avulla ja laske sen arvo.

rm + sn = d. Siispä Proposition 9.5(4) nojalla e d.

Matematiikan tukikurssi

Suurin yhteinen tekijä (s.y.t.) ja pienin yhteinen monikerta (p.y.m.)

1 Lukujen jaollisuudesta

on Abelin ryhmä kertolaskun suhteen. Tämän joukon alkioiden lukumäärää merkitään

Mitään muita operaatioita symbolille ei ole määritelty! < a kaikilla kokonaisluvuilla a, + a = kaikilla kokonaisluvuilla a.

} {{ } kertaa jotain

R : renkaan R kääntyvien alkioiden joukko; R kertolaskulla varustettuna on

RSA Julkisen avaimen salakirjoitusmenetelmä

2017 = = = = = = 26 1

802328A LUKUTEORIAN PERUSTEET OSA III BASICS OF NUMBER THEORY PART III. Tapani Matala-aho MATEMATIIKKA/LUTK/OULUN YLIOPISTO

d Z + 17 Viimeksi muutettu

Liite 2. Ryhmien ja kuntien perusteet

a b c d

a k+1 = 2a k + 1 = 2(2 k 1) + 1 = 2 k+1 1. xxxxxx xxxxxx xxxxxx xxxxxx

802328A LUKUTEORIAN PERUSTEET OSA III BASICS OF NUMBER THEORY PART III

Nopea kertolasku, Karatsuban algoritmi

KRYPTOLOGIA. Keijo Ruohonen

Primitiiviset juuret: teoriaa ja sovelluksia

MS-A0402 Diskreetin matematiikan perusteet

7. Olemassaolo ja yksikäsitteisyys Galois n kunta GF(q) = F q, jossa on q alkiota, määriteltiin jäännösluokkarenkaaksi

Todistus. Eliminoidaan Euleideen algoritmissa jakojäännökset alhaaltaylöspäin.

Nimittäin, koska s k x a r mod (p 1), saadaan Fermat n pienen lauseen avulla

Salausmenetelmät. Veikko Keränen, Jouko Teeriaho (RAMK, 2006)

Teema 4. Homomorfismeista Ihanne ja tekijärengas. Teema 4 1 / 32

Shorin algoritmin matematiikkaa Edvard Fagerholm

Määritelmä, alkuluku/yhdistetty luku: Esimerkki . c) Huomautus Määritelmä, alkutekijä: Esimerkki

kaikille a R. 1 (R, +) on kommutatiivinen ryhmä, 2 a(b + c) = ab + ac ja (b + c)a = ba + ca kaikilla a, b, c R, ja

ja jäännösluokkien joukkoa

H = : a, b C M. joten jokainen A H {0} on kääntyvä matriisi. Itse asiassa kaikki nollasta poikkeavat alkiot ovat yksiköitä, koska. a b.

Algebra I, harjoitus 5,

TAMPEREEN YLIOPISTO Pro gradu -tutkielma. Jukka Vilen. Polynomirenkaista

Alkulukujen harmoninen sarja

R 1 = Q 2 R 2 + R 3,. (2.1) R l 2 = Q l 1 R l 1 + R l,

Funktioiden approksimointi ja interpolointi

Neljän alkion kunta, solitaire-peli ja

[a] ={b 2 A : a b}. Ekvivalenssiluokkien joukko

Salakirjoitusmenetelmiä

Juuri 11 Tehtävien ratkaisut Kustannusosakeyhtiö Otava päivitetty

2 Yhtälöitä ja epäyhtälöitä

LAUSEKKEET JA NIIDEN MUUNTAMINEN

Diofantoksen yhtälön ratkaisut

Rationaaliluvun desimaaliesitys algebrallisesta ja lukuteoreettisesta näkökulmasta

Algebra I Matematiikan ja tilastotieteen laitos Ratkaisuehdotuksia harjoituksiin 3 (9 sivua) OT

Matikkapaja keskiviikkoisin klo Lineaarialgebra (muut ko) p. 1/81

x j x k Tällöin L j (x k ) = 0, kun k j, ja L j (x j ) = 1. Alkuperäiselle interpolaatio-ongelmalle saadaan nyt ratkaisu

Kryptologia Esitelmä

Numeeriset menetelmät

1 Algebralliset perusteet

1 Lineaariavaruus eli Vektoriavaruus

1 sup- ja inf-esimerkkejä

FUNKTIONAALIANALYYSIN PERUSKURSSI Johdanto

2 j =

Luentorunko ja harjoitustehtävät. SALAUSMENETELMÄT (801346A) 4 op, 2 ov

Lukuteoria. Eukleides Aleksandrialainen (n. 300 eaa)

TAMPEREEN YLIOPISTO Pro gradu -tutkielma. Jussi Tervaniemi. Primitiiviset juuret

Kokonaislukuoptimointi

k=1 b kx k K-kertoimisia polynomeja, P (X)+Q(X) = (a k + b k )X k n+m a i b j X k. i+j=k k=0

Matematiikassa ja muuallakin joudutaan usein tekemisiin sellaisten relaatioiden kanssa, joiden lakina on tietyn ominaisuuden samuus.

(iv) Ratkaisu 1. Sovelletaan Eukleideen algoritmia osoittajaan ja nimittäjään. (i) 7 = , 7 6 = = =

(1) refleksiivinen, (2) symmetrinen ja (3) transitiivinen.

Rollen lause polynomeille

Johdatus lukuteoriaan Harjoitus 2 syksy 2008 Eemeli Blåsten. Ratkaisuehdotelma

pdfmark=/pages, Raw=/Rotate 90 1 LUKUTEORIAA JA MUITA TYÖKALUJA SALAUKSEEN Lukujoukot Sekalaisia merkintöjä...

Lineaariset kongruenssiyhtälöryhmät

802354A Algebran perusteet Luentorunko Kevät Työryhmä: Markku Niemenmaa, Kari Myllylä, Topi Törmä

XXIII Keski-Suomen lukiolaisten matematiikkakilpailu , tehtävien ratkaisut

802354A Algebran perusteet Luentorunko Kevät Työryhmä: Markku Niemenmaa, Kari Myllylä, Topi Törmä

w + x + y + z =4, wx + wy + wz + xy + xz + yz =2, wxy + wxz + wyz + xyz = 4, wxyz = 1.

Eulerin lauseen merkitys kryptauksen kannalta

Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9

811120P Diskreetit rakenteet

Liite 1. Laajennettu Eukleideen algoritmi suoraviivainen tapa

Kuvauksista ja relaatioista. Jonna Makkonen Ilari Vallivaara

Jokainen kokonaisluku n voidaan esittää muodossa (missä d on positiivinen kok.luku) Tässä q ja r ovat kokonaislukuja ja 0 r < d.

4 Yleinen potenssifunktio ja polynomifunktio

Juuri 12 Tehtävien ratkaisut Kustannusosakeyhtiö Otava päivitetty

1 Peruslaskuvalmiudet

Matemaattisten menetelmien hallinnan tason testi.

Todistusmenetelmiä Miksi pitää todistaa?

1 Jakajat ja jäännökset. on hyvinjärjestetty, eli jokaisessa epätyhjässä joukossa J N on pienin alkio. Otetaan käyttöön merkintä

TAMPEREEN YLIOPISTO Pro gradu -tutkielma. Ville-Matti Erkintalo. Lukuteoria ja RSA

Matikkapaja keskiviikkoisin klo Lineaarialgebra (muut ko) p. 1/210

Fermat n pieni lause. Heikki Pitkänen. Matematiikan kandidaatintutkielma

LUKUTEORIA A. Harjoitustehtäviä, kevät (c) Osoita, että jos. niin. a c ja b c ja a b, niin. niin. (e) Osoita, että

Alkulukujen teoriaa ja Goldbachin otaksuma

6*. MURTOFUNKTION INTEGROINTI

Transkriptio:

MATEMAATTINEN KRYPTOLOGIA Keijo Ruohonen 2012

Sisältö 1 I JOHDANTO 3 II LUKUTEORIA: OSA 1 3 2.1 Jaollisuus, tekijät, alkuluvut 5 2.2 Kokonaisluvun esitys eri kannoissa 6 2.3 Suurin yhteinen tekijä ja pienin yhteinen jaettava 10 2.4 Kongruenssilaskenta eli modulaarilaskenta 12 2.5 Jäännösluokkarenkaat ja alkukunnat 13 2.6 Suurten kokonaislukujen algoritmeja 13 Yhteen- ja vähennyslasku 13 Kertolasku 15 Jakolasku 17 Potenssiin korotus 18 Kokonaisjuuri 20 Satunnaisluvun generointi 23 III JOITAIN KLASSISIA KRYPTOSYSTEEMEJÄ KRYPTANALYYSEINEEN 23 3.1 AFFINE. CAESAR 24 3.2 HILL. PERMUTATION. AFFINE-HILL. VIGENÈRE 24 3.3 ONE-TIME-PAD 25 3.4 Kryptanalyysi 27 IV ALGEBRA: RENKAAT JA KUNNAT 27 4.1 Renkaat ja kunnat 28 4.2 Polynomirenkaat 32 4.3 Äärelliset kunnat 34 V AES 34 5.1 Yleistä 34 5.2 RIJNDAEL 35 5.2.1 Kierrokset 36 5.2.2 Tavun muuntaminen (SubBytes) 37 5.2.3 Rivinsiirto (ShiftRows) 37 5.2.4 Sarakkeiden sekoitus (MixColumns) 38 5.2.5 Kierrosavaimen lisäys (AddRoundKey) 38 5.2.6 Avaimen laajentaminen 39 5.2.7 Dekryptauksen muunnelma 40 5.3 RIJNDAELin kryptanalyysiä 41 5.4 AESin toimintamoodeja i

ii 42 VI JULKISEN AVAIMEN KRYPTAUS 42 6.1 Algoritmien vaativuusteoriaa 44 6.2 Julkisen avaimen kryptosysteemi 46 6.3 Reppusysteemin nousu ja tuho 47 6.4 Julkisen avaimen kryptaukseen sopivia tehtäviä 48 VII LUKUTEORIA: OSA 2 48 7.1 Eulerin funktio ja Eulerin lause 49 7.2 Kertaluku ja diskreetti logaritmi 52 7.3 Kiinalainen jäännöslause 53 7.4 Alkulukujen testaus ja generointi 58 7.5 Lukujen tekijöihinjako 59 7.6 Modulaarinen neliöjuuri 62 7.7 Vahvat satunnaisluvut 63 7.8 Hilat. LLL-algoritmi 65 VIII RSA 65 8.1 RSAn määrittely 66 8.2 Hyökkäyksiä ja puolustuksia 69 8.3 Kryptanalyysi ja tekijöihinjako 70 8.4 Osittaisen tiedon saaminen viestin biteistä 72 8.5 Hyökkäys LLL-algoritmilla 74 IX ALGEBRA: RYHMÄT 74 9.1 Ryhmät 77 9.2 Diskreetti logaritmi 78 9.3 Elliptiset käyrät 85 X ELGAMAL. DIFFIE HELLMAN 85 10.1 Elgamalin kryptosysteemi 86 10.2 Diffie Hellman-avainjakosysteemi 87 10.3 Elliptisiin käyriin perustuvat kryptosysteemit 88 10.4 XTR 89 XI NTRU 89 11.1 Määrittely 90 11.1 Kryptaus ja dekryptaus 91 11.3 Systeemin pystytys 92 11.4 Hyökkäys LLL-algoritmilla 93 XII TIIVISTEFUNKTIOT JA TIIVISTEET 93 12.1 Määritelmiä 95 12.2 Syntymäpäivähyökkäys 97 12.3 Chaum van Heijst Pfitzmann -tiiviste

iii 99 XIII ALLEKIRJOITUS 99 13.1 Allekirjoitussysteemi 100 13.2 RSA-allekirjoitus 100 13.3 Elgamalin allekirjoitus 101 13.4 Syntymäpäivähyökkäys allekirjoitusta vastaan 102 XIV SALAISEN TIEDON SIIRTO 102 14.1 Arpominen 104 14.2 Salaisuuksien jakaminen 105 14.3 Tietymätön tiedonsiirto 106 14.4 Nollatietotodistukset 110 XV KVANTTIKRYPTOLOGIA 110 15.1 Kvanttibitti 111 15.2 Kvanttirekisterit ja kvanttialgoritmit 113 15.3 Shorin algoritmit 115 15.4 Avainjako kvanttimenetelmällä 119 Liite: DES 119 Liite.1 Yleistä 119 Liite.2 DESin määrittely 122 Liite.3 DESin kryptanalyysiä 124 Kirjallisuus 127 Hakemisto Esipuhe Tämä moniste on tarkoitettu TTY:n kurssin MAT-52600 Matemaattinen kryptologia perusmateriaaliksi. Monisteessa käydään läpi tärkeimmät nykyisen tiedonsalauksen tarvitsemat matemaattiset taustat sekä esitellään niiden soveltamista kryptauksessa sekä erilaisissa protokollissa. Matematiikan ja kryptologian liitto on vanha, mutta tuli vahvemmin esille oikeastaan vasta toisen maailmansodan tehokkaiden kryptausmenetelmien ja niiden murtamisen yhteydessä, sitten kun nämä tulivat julkisiksi. Asian yleinenkin kiinnostavuus ilmenee vaikkapa siitä kirjoitettujen suurelle yleisölle tarkoitettujen (osin) fiktiivisten kirjojen runsaudesta. 1 Kokonaan uuden vauhdin koko ala sai 1970-luvulla, jolloin otettiin käyttöön täysin avoin, nopea ja tehokas tietokoneille tarkoitettu kryptausmenetelmä DES sekä esiteltiin vallankumouksellinen julkisen avaimen kryptauksen idea. 2 Sen jälkeen kryptologian sekä myös sen tarvitseman matematiikan lähinnä eräiden lukuteorian ja algebran alojen kehitys on ollut tavattoman nopeaa. Voidaankin sanoa, että lukuteorian ja algebran viimeaikainen suosio johtuu nimenomaan kryptologiasta. Usein tähän liitetään myös teoreettiseen tietojenkäsittelytieteeseen kuuluva laskennallisen vaativuuden teoria, mutta totuuden nimessä pitänee todeta, ettei sillä ole ollut kryptologiassa kovinkaan suurta merkitystä. Otollisia kryptauksessa käyttökelpoisia mate- 1 Esimerkkinä vaikkapa Neal Stephensonin mainio Cryptonomicon. 2 Steven Levyn kirja Crypto. Secrecy and Privacy in the New Code War antaa hieman romantisoidun kuvauksen näistä julkisen avaimen kryptauksen alkuajoista.

maattisia probleemoja kun ovat sellaiset, joita huippumatemaatikot ovat tutkineet jo niin kauan, että vain todella vaikeasti löydettävät teorian tulokset ovat avoinna. Kryptauksen murtaminen edellyttää silloin myös huomattavaa teoreettista läpimurtoa. Tällaisia probleemoja löytyy runsaasti nimenomaan lukuteorian ja diskreetin algebran aloilta. Lukuteorian ja algebran tulokset ja algoritmit esitetään tässä monisteessa omissa luvuissaan, useassa osassa. Keskeistä on lukuteorian ja algebrallisten struktuurien probleemojen lajittelu laskennallisesti helppoihin ja vaikeisiin. Edellisiä tarvitaan kryptauksessa ja dekryptauksessa sekä myös kryptosysteemien pystytyksessä, jälkimmäiset taas takaavat kryptosysteemin varmuuden. Myös aloitteleva kvanttikryptaus esitellään lyhyesti taustoineen. Klassisia kryptosysteemejä joihin myös DES ja myöhempi AES on tyypiltään luettava esitellään monisteessa vain muutamia, lisätietoa niistä löytyy vaikkapa viitteistä BAUER, MOL- LIN ja SALOMAA, ja pääpaino on moderneissa julkisen avaimen menetelmissä. Tämä ei suinkaan ole osoitus siitä, että niillä ei olisi käyttöä. Vaikka vanhojen klassisten menetelmien merkitys on kadonnut nopeasti 3, uudempia klassistyyppisiä menetelmiä käytetään paljon ja niillä on hyvin tärkeä rooli nopeassa massakryptauksessa. Monisteessa jätetään vähälle huomiolle myös monissa sovelluksissa niin tärkeä vuokryptaus. Yhden kurssin puitteissa aika on rajallinen. Kokonaan oma lukunsa on vielä kryptosysteemien oikea implementointi ja käyttö, johon tällaisessa matemaattisessa kurssissa ei voi kovinkaan paljon puuttua. Hyväkin kryptosysteemi kun voidaan helposti tehdä tehottomaksi huonolla implementoinnilla ja huolettomalla käytöllä. 4 iv Keijo Ruohonen 3 Esimerkkinä mainittakoon vaikkapa se, että Yhdysvaltain maavoimien kenttämanuaali FM 34-40-2: Basic Cryptanalysis on nykyään julkisesti saatavana verkossa. Viite BAUER sisältää myös aikaisemmin salaiseksi luokiteltua materiaalia. 4 Erinomainen tähän liittyvä teos on Bruce Schneierin Secrets and Lies. Digital Security in a Networked World.

Luku 1 JOHDANTO Viestin kryptauksella tarkoitetaan sen salaamista siten, että satunnainen lukija tai salakuuntelija ei saa selville mitään viestin sisällöstä eli hän ei pysty murtamaan kryptausta. Alkuperäistä selväkielistä viestiä kutsutaan selvätekstiksi ja kryptattua taas kryptotekstiksi. Kryptauksessa tarvitaan ns. avain, ts. eräänlainen yleensä varsin mutkikas parametri, jolla kryptausta voidaan muuttaa. Jos kryptausmenettely pysyy pitkään tarkalleen samana, lisääntyvät murtomahdollisuudet käytännössä tuntuvasti. Eri käyttäjät tarvitsevat luonnollisesti vielä omat avaimensa. Viestin vastaanottaja dekryptaa viestin, mitä varten hän tarvitsee oman avaimensa. Salakuuntelijalle sekä kryptausavain että dekryptausavain ovat arvokkaita, edellistä käyttäen hän pystyy lähettämään kryptattuja valeviestejä, jälkimmäisellä taas purkamaan eli dekryptaamaan viestit. Symmetrisissä kryptosysteemeissä avaimet ovat lisäksi usein samat. Kryptausmenettely voi kryptata symbolivirtaa jatkuvasti (vuokryptaus) tai lohkoihin jaettuna (lohkokryptaus). Lohkokryptauksessa lohkot voivat joissain tapauksissa olla eripituisia, kuitenkaan tiettyä lohkon maksimipituutta ei saa ylittää. Yleensä kuitenkin lohkot ovat samanpituisia. Jatkossa tarkastellaan vain lohkokryptausta. Tällöin riittää selvittää mielivaltaisen viestilohkon kryptaaminen/dekryptaaminen ja selvätekstinä voidaan pitää yhtä mielivaltaista viestilohkoa ja kryptotekstinä mielivaltaista viestilohkon kryptattua versiota. Kryptausmenettely on symmetrinen, jos kryptaus- ja dekryptausavaimet ovat samat tai ainakin helposti saatavissa toinen toisistaan. Epäsymmetrisessä kryptauksessa kryptausavaimesta ei voi millään pienellä työmäärällä saada dekryptausavainta. Niinpä kryptausavain voidaan tällöin pitää jopa julkisena dekryptausavaimen pysyessä salaisena; tästä nimi julkisen avaimen kryptaus, vastaavasti symmetristä kryptausta kutsutaan salaisen avaimen kryptaukseksi. Symmetrisessä kryptauksessa pulmana on avaimien välitys salassa kaikille osapuolille, avaimia pitää vielä uusiakin aika ajoin. Symmetrinen kryptaus käyttäen samaa avainta voidaan karakterisoida ns. kryptosysteeminä eli viisikkona(p,c,k,e,d), missä P on äärellinen viestiavaruus (selvätekstit). C on äärellinen kryptotekstiavaruus. K on äärellinen avainavaruus. kutakin avainta k K kohti on kryptausfunktio e k E ja dekryptausfunktio d k D. E on mahdollisten kryptausfunktioiden avaruus ja D mahdollisten dekryptausfunktioiden avaruus. jokaiselle viestille (lohkolle)w ja avaimellek ond k (e k (w)) = w. 1

LUKU 1. JOHDANTO 2 Ilmeisesti kryptausfunktion pitää olla injektiivinen, ts. se ei kryptaa kahta eri selvätekstiä samaksi kryptotekstiksi. Kryptauksessa voi kuitenkin olla mukana satunnaisuutta, jolloin kryptausfunktio voi eri kerroilla kryptata saman selvätekstin eri kryptotekstiksi, kyseessä ei siis tällöin ole varsinaisesti matemaattinen funktio. Injektiivisyydestäkin voidaan toisinaan tinkiä, jos kryptotekstiä vastaavia selvätekstejä on rajallinen määrä ja niistä löytyy se oikea pienellä vaivalla. salakuuntelija l hett j selv - teksti e k kryptoteksti kanava kryptoteksti d k selv - teksti vastaanottaja avainjako k avainjako Kutakuinkin kaikki laajemmin käytetyt kryptausmenetelmät perustuvat lukuteorian tai algebran (ryhmäteoria, äärelliset kunnat, kommutatiivinen algebra) tuloksiin. Näihin perehdytään sitä mukaa kuin ne tulevat esille, tarvittavassa määrin.

So in order to remove the contingent and subjective elements from cryptography there have been concerted efforts in recent years to transform the field into a branch of mathematics, or at least a branch of the exact sciences. In my view, this hope is misguided, because in its essence cryptography is as much an art as a science. (N. KOBLITZ, 2010) Luku 2 LUKUTEORIA. OSA 1 2.1 Jaollisuus, tekijät, alkuluvut Tietyt lukuteorian 1 käsitteet ja tulokset tulevat hyvin usein esille kryptologiassa, vaikka menettely sinänsä ei liittyisikään lukuteoriaan. Kaikkien kokonaislukujen joukkoa merkitään Z:lla. Ei-negatiivisten kokonaislukujen eli ns. luonnollisten lukujen joukkoa {0, 1, 2,...} merkitään N:llä. Kokonaislukujen yhteen- ja kertolasku ovat tuttuja vaihdannaisia ja liitännäisiä laskuoperaatioita, joiden identiteettialkiot ovat 0 ja 1. Muista myös liitäntälaki x(y + z) = xy + xz sekä vastaluvun ja vähennyslaskun määrittelyt x = ( 1)x ja x y = x +( 1)y. Kokonaislukujen jakolasku tarkoittaa seuraavanlaista operaatiota: Jaettaessa kokonaisluku x (jaettava) kokonaisluvulla y 0 (jakaja) x saatetaan muotoon x = qy +r, missä kokonaisluku r on jakojäännös, joka toteuttaa ehdon 0 r < y. Kokonaisluku q on osamäärä. Lisäämällä x:ään toistuvasti y:tä tai y:tä nähdään, että x on mahdollista kirjoittaa ko. muotoon. Jos voidaan kirjoittaa x = qy, missäq on kokonaisluku, sanotaan, ettäxon jaollineny:llä tai ettäy jakaax:n tai ettäy onx:n tekijä, merkitään y x. Kokonaisluvunxns. triviaalit tekijät ovat ±1 ja ±x. Mahdolliset muut tekijät ovat ei-triviaaleja. Seuraavat jaollisuuden ominaisuudet ovat melko ilmeisiä: (1) 0 on jaollinen millä tahansa kokonaisluvulla, mutta jakaa vain itsensä. (2) 1 ja 1 jakavat kaikki kokonaisluvut, mutta ovat jaollisia vain itsellään ja toinen toisillaan. (3) Josy x jax 0, niin y x. (4) Jos x y ja y z, niin myös x z (ts. jaollisuus on transitiivinen). (5) Josx y jax z, niin myösx y ±z. 1 Lukuteoria on nimenomaan kokonaislukujen teoriaa. Tosin lukuteoriasta on eri suuntiin laajenevia versioita. Mukaan voidaan ottaa algebralliset luvut eli kokonaiskertoimisten polynomien juuret jolloin päästään algebralliseen lukuteoriaan, jolla on muuten paljonkin käyttöä kryptologiassa, ks. esimerkiksi KOBLITZ. Toisaalta lukuteoriaa voidaan tutkia käyttämällä muita matematiikan formalismeja. Esimerkiksi analyyttinen lukuteoria tutkii kokonaislukuja käyttäen matemaattisen analyysin menetelmiä integraaleja, sarjoja jne. ja silläkin on käyttöä kryptologiassa, ks. SHPARLINSKI. 3

LUKU 2. LUKUTEORIA. OSA 1 4 (6) Josx y jaz on kokonaisluku, niinx yz. Jakolaskun tulos on yksikäsitteinen. Jos nimittäin x = q 1 y +r 1 = q 2 y +r 2, missä q 1,q 2,r 1,r 2 ovat kokonaislukuja ja 0 r 1,r 2 < y, niin y jakaa r 1 r 2 :n. Koska r 1 r 2 < y, tästä seuraa ettär 1 = r 2 ja edelleen ettäq 1 = q 2. Kokonaislukua, jolla on vain triviaalit tekijät, kutsutaan jaottomaksi. Jaoton kokonaisluku on alkuluku 2, jos se on 2. Ensimmäiset alkuluvut ovat 2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,... 2 on ainoa parillinen alkuluku. Eräs perustehtävä on testata onko luonnollinen luku alkuluku vai ei. Kokonaisluku, joka on 2 eikä ole alkuluku, on yhdistetty luku. Lause 2.1. Jos kokonaisluku x on itseisarvoltaan 2, niin sillä on alkulukutekijä eli ns. alkutekijä. Todistus. Jos x 2, alkutekijäplöytyy seuraavalla algoritmilla: 1. Asetetaan z x. 2. Josz on jaoton, tulostetaanp = z ja lopetetaan. 3. Josz ei ole jaoton, etsitään sen ei-triviaali tekijäu. Asetetaanz u ja mennään kohtaan 2. Menettely pysähtyy, sillä kohdan 3. kautta mentäessä aina z pienenee ja on lopulta alkuluku, jolloin tullaan ulos kohdasta 2. Seuraus. Alkulukuja on äärettömän monta. Todistus. Ääretön jono alkulukuja voidaan saada aikaan seuraavalla jo muinaisten kreikkalaisten tuntemalla menettelyllä (jonka ei kuitenkaan arvella tuottavan kaikkia alkulukuja): 1. Asetetaan P 2. TässäP on jonomuuttuja. 2. Jos P = p 1,...,p n, niin lasketaan x = p 1 p n + 1. Huomaa, ettei mikään jonon P alkuluvuista jaax:ää (jakolaskun yksikäsitteisyys). 3. Lauseen 2.1 mukaisesti x:llä on alkutekijä p, joka ei siis kuitenkaan ole mikään jonon P alkuluvuista. Etsitään jokinp, asetetaan P P,p ja palataan kohtaan 2. Alkulukuihin liittyviä perustehtäviä ovat mm. seuraavat: (1) Laske suuruusjärjestyksessän:s alkuluku. (2) Laske suuruusjärjestyksessä n ensimmäistä alkulukua. (3) Laske suurin (vast. pienin) alkuluku, joka on x (vast. x). (4) Laske alkuluvut, jotka ovat x. 2 Alkulukujen joukkoa merkitään toisinaanp:llä.

LUKU 2. LUKUTEORIA. OSA 1 5 Lause 2.2. Kokonaisluku x 0 voidaan etumerkkiä vaille kirjoittaa alkulukujen tuloksi, ns. tekijöihinjako. Erityisesti sovitaan, että luku 1 on ns. tyhjä tulo eli tulo, jossa ei ole tekijöitä. Todistus. Seuraava menettely tuottaa jonon alkulukuja, joiden tulo on= ±x: 1. Asetetaan T NULL (tyhjä jono). 2. Josx = ±1, tulostetaant ja lopetetaan. Muista, että tyhjä tulo on = 1. 3. Etsitään jokin x:n alkutekijä p (Lause 2.1), jolloin x = py. Asetetaan T T,p sekä x y ja mennään kohtaan 2. Menettely pysähtyy, koska aina kohdan 3. kautta mentäessä x pienenee ja on lopulta = 1, jolloin tullaan ulos kohdasta 2. Erityisesti tulostus on tyhjä jono, jos x = ±1. Myöhemmin todetaan vielä, että ko. tekijöihinjako on tekijöiden järjestystä lukuunottamatta yksikäsitteinen, ks. Pykälä 2.3. Luonnollisesti eräs perustehtävä on kokonaisluvun tekijöihinjaon etsiminen. Laskennallisesti tämä on varsin vaativaa, ks. Pykälä 7.5. 2.2 Kokonaisluvun esitys eri kannoissa Tavallisin tapa esittää kokonaisluku on käyttää tuttua desimaaliesitystä eli 10-kantaista esitystä. Myös 2-kantainen eli binääriesitys on usein esillä, samoin 8-kantainen oktaaliesitys ja 16-kantainen heksadesimaaliesitys. Yleisen kannan esityksen antaa Lause 2.3. Jos k 2, niin jokainen positiivinen kokonaisluku x voidaan esittää yksikäsitteisesti muodossa x = a n k n +a n 1 k n 1 + +a 1 k +a 0, missä0 a 0,a 1,...,a n k 1 jaa n > 0. Kyseessä onx:nk-kantainen esitys,k on kantaluku eli radix ja n+1 on esityksen pituus. Todistus. Esityksen eli jonona n,a n 1,...,a 0 antaa seuraava algoritmi: 1. Asetetaan K NULL (tyhjä jono). 2. Jaetaan x kantaluvullak: Asetetaan K r,k jax q. x = qk + r (osamäärä q, jakojäännös r). 3. Josx = 0, tulostetaankja lopetetaan. Muussa tapauksessa mennään kohtaan 2. Koska kohdassa 2. ainaxpienenee, menettely pysähtyy lopulta kohtaan 3. k-kantainen esitys on yksikäsitteinen. Jos nimittäin x = a n k n +a n 1 k n 1 + +a 1 k +a 0 = b m k m +b m 1 k m 1 + +b 1 k +b 0, missä 0 a 0,a 1,...,a n,b 0,b 1,...,b m k 1 ja a n,b m > 0 ja n m, niin ensinnäkin voidaan päätellä, että n = m eli että esityksen pituus on yksikäsitteinen. Jos olisi n > m, niin olisi myös

LUKU 2. LUKUTEORIA. OSA 1 6 b m k m +b m 1 k m 1 + +b 1 k +b 0 (k 1)k m +(k 1)k m 1 + +(k 1)k +k 1 = k m+1 1 < k m+1 k n a n k n +a n 1 k n 1 + +a 1 k +a 0, mikä on ristiriita. Siispä n = m. Samalla tavoin voidaan todeta, että a n = b n. Jos nimittäin vaikkapaa n > b n, niin b n k n +b n 1 k n 1 + +b 1 k +b 0 (a n 1)k n +(k 1)k n 1 + +(k 1)k +k 1 = a n k n 1 < a n k n +a n 1 k n 1 + +a 1 k +a 0, mikä on taas ristiriita. Edelleen voidaan samalla tavoin näyttää, ettäa n 1 = b n 1 jne. Luvun 0 esitys on periaatteessa tyhjä jono missä tahansa kannassa. Koska tämä ei tietenkään käy, sovitaan, että 0:n esitys on 0. Konversio eri kantaesitysten välillä, ns. kantamuunnos eli radix-muunnos, on tietysti kokonaislukujen perustehtäviä. Lause 2.4. Positiivisen kokonaisluvunxk-kantaisen esityksen pituus on missälog k on k-kantainen logaritmi 3. log k x +1 = log k (x+1), Todistus. Josx:nk-kantainen esitys onx = a n k n +a n 1 k n 1 + +a 1 k+a 0, niin sen pituus on s = n+1. Ilmeisestix k n ja toisaalta x (k 1)k n +(k 1)k n 1 + +(k 1)k +k 1 = k n+1 1 < k n+1. Koska siisk s 1 x < k s, niins 1 log k x < s eli s = log k x +1. Toisaalta myösk s 1 < x+1 k s, jotens 1 < log k (x+1) s eli s = log k (x+1). 2.3 Suurin yhteinen tekijä ja pienin yhteinen jaettava Kokonaislukujenx ja y suurin yhteinen tekijä (s.y.t.) on suurin kokonaislukud, joka jakaa molemmat luvut, merkitään d = syt(x,y). S.y.t. on olemassa, jos ainakin toinen luvuista x ja y on 0. Huomaa, että s.y.t. on positiivinen. (Usein määritellään kuitenkin syt(0, 0) = 0.) Jos syt(x, y) = 1, sanotaan että luvuilla x ja y ei ole yhteisiä tekijöitä tai että ne ovat keskenään jaottomia. 3 Muistathan, että logaritmien kannan vaihto sujuu kaavalla log k x = lnx/lnk. Tässä x tarkoittaa x:n ns. pohjaa, ts. suurinta kokonaislukua, joka on x. Vastaavasti x tarkoittaa x:n ns. kattoa eli pienintä kokonaislukua, joka on x.

LUKU 2. LUKUTEORIA. OSA 1 7 Lause 2.5. (Bézout n lause) Kokonaislukujen x ja y, joista ainakin toinen on 0, s.y.t. d voidaan kirjoittaa muotoon d = c 1 x+c 2 y (ns. Bézout n muoto), missä c 1 ja c 2 ovat kokonaislukuja, ns. Bézout n kertoimet. Lisäksi, jos x,y 0, voidaan olettaa, että c 1 y ja c 2 x. Todistus. Bézout n muodon samoin kuin s.y.t.:nkin antaa seuraava ns. (Yleistetty) Eukleideen algoritmi. Tässä oletetaan, että 0 x y, mikä ilmeisesti ei mitenkään rajoita tilannetta. MerkitäänSYT(x,y) = (d,c 1,c 2 ). (Yleistetty) Eukleideen algoritmi: 1. Jos x = 0, niin tulostetaan SYT(x, y) = (y, 0, 1) ja lopetetaan. 2. Josx > 0, niin jaetaany ensinx:llä:y = qx+r, missä0 r < x. EtsitäänSYT(r,x) = (d,e 1,e 2 ). Silloin d = e 1 r +e 2 x = e 1 (y qx)+e 2 x = (e 2 e 1 q)x+e 1 y. TulostetaanSYT(x,y) = (d,e 2 e 1 q,e 1 ) ja lopetetaan. Koska r = y qx, syt(x, y) jakaa r:n ja näin ollen syt(x, y) syt(x, r). Vastaavasti syt(x, r) jakaa y:n ja siis syt(x,r) syt(x,y), joten syt(x,r) = syt(x,y). Kohta 2. tuottaa siis oikean tuloksen. Rekursio on päättyvä, koska min(r, x) < min(x, y), ts. aina kutsuttaessa SYT ko. minimiarvo pienenee ja on lopulta= 0. Jos x,y 0, niin ilmeisesti juuri ennen kuin rekursiossa tullaan kohtaan 1. on y = qx ja r = 0 ja d = x, jolloin c 1 = 1 y ja c 2 = 0 x. Toisaalta, aina kun kohdassa 2. y = qx + r ja d = e 1 r + e 2 x, missä e 1 x ja e 2 r, niin e 1 ja e 2 ovat erimerkkiset ja e 2 e 1 q = e 2 + e 1 q r+xq = y. Uudetkin kertoimetc 1 = e 2 e 2 q jac 2 = e 1 toteuttavat siis esitetyn ehdon. Suoraan Bézout n lauseesta näkee seuraavan tuloksen: Seuraus. Jos kokonaisluku z jakaa kokonaisluvut x ja y, joista ainakin toinen on 0, niin se jakaa myös syt(x,y):n. Huomautus. Tästä johtuen syt(x, y) määritelläänkin usein siten, että se on x:n ja y:n yhteinen tekijä, joka on jaollinen kaikilla näiden lukujen yhteisillä tekijöillä. Tämä johtaa samaan s.y.t.:n käsitteeseen. Vm. määritelmä soveltuu kuitenkin myös tilanteeseen x = y = 0 ja antaa em. kaavan syt(0, 0) = 0. Toinen seuraus Bézout n lauseesta on lukujen tekijöihinjaon yksikäsitteisyys, ks. Lause 2.2. Lause 2.6. Kokonaisluvun x 0 tekijöihinjako on yksikäsitteinen. Todistus. Asetetaan vastaoletus: On kokonaisluku x, jolla on (ainakin) kaksi eri tekijöihinjakoa. Voidaan olettaa, että x on positiivinen ja pienin sellainen positiivinen kokonaisluku, jolla on vastaoletuksessa mainittu ominaisuus. Ilmeisesti x 2, sillä ykkösen ainoa tekijöihinjako on tyhjä tulo. Nytxvoidaan oletettuja eri tekijöihinjakoja vastaten kirjoittaa tulomuotoihin x = p i 1 1 p i 2 2 p in n = qj 1 1 q j 2 2 q jm m,

LUKU 2. LUKUTEORIA. OSA 1 8 missä p 1,...,p n ovat eri alkulukuja ja samoin q 1,...,q m ovat eri alkulukuja ja i 1,...,i n sekä j 1,..., j m ovat positiivisia kokonaislukuja. Itse asiassa edelleen tiedetään, että silloin myös alkuluvut p 1,..., p n eroavat alkuluvuista q 1,...,q m. Jos nimittäin esimerkiksi p 1 = q 1, niin kokonaisluvulla x/p 1 olisi myös kaksi eri tekijöihinjakoa ja se on pienempi kuin x. Ilmeisesti syt(p 1,q 1 ) = 1, joten Bézout n muodossa Mutta tästä seuraa, että 1 = c 1 p 1 +c 2 q 1. q j 1 1 1 q j 2 2 qjm m = (c 1p 1 +c 2 q 1 )q j 1 1 1 q j 2 2 qjm m = c 1p 1 q j 1 1 1 q j 2 2 qjm m +c 2x, josta havaitaan, ettäp 1 jakaa tulonq j 1 1 1 q j 2 2 qjm m, ts. q j 1 1 1 q j 2 2 qjm m = p 1z. Koska z:lla ja q j 1 1 1 q j 2 2 q jm m :llä on yksikäsitteiset tekijöihinjaot (ne ovat pienempiä kuin x), seuraa tästä, ettäp 1 on jokin alkuluvuistaq 1,...,q m, mikä on ristiriita. Vastaoletus on siis väärä ja tekijöihinjako on yksikäsitteinen. Esitettäessä rationaaliluku muodossax/y, on tapana että syt(x,y) = 1, ts. luku on supistetussa muodossa. Tämä on erityisen tärkeää suurilla luvuilla laskettaessa, jotta x ja y eivät pääsisi kasvamaan suuriksi. Supistettu muoto saadaan luonnollisesti jakamallaxja y syt(x,y):llä, joten pitkissä laskuissa s.y.t. joudutaan etsimään toistuvasti. On tärkeää huomata, että Bézout n lauseessa mainittu kertoimia koskevat rajat c 1 y ja c 2 x ovat voimassa eo. Eukleideen algoritmin joka vaiheessa. Välitulokset eivät näin kasva suuriksi. Toisaalta Eukleideen algoritmi ei ota kovin monta askeltakaan: Lause 2.7. Laskettaessa syt(x, y), missä 0 x y, Eukleideen algoritmi tarvitsee enintään 2log 2 y +1 jakolaskua. Todistus. Asia on selvä, jos x = 0 (ei jakolaskuja) tai x = y (yksi jakolasku), joten voidaan siirtyä tapaukseen 0 < x < y. Todistus perustuu seuraavaan jakolaskua koskevaan havaintoon: Aina jaettaessa kokonaisluvut a ja b, missä 0 < a < b, muodossa b = qa + r (osamäärä q, jakojäännösr), on b = qa+r a+r > 2r. Laskettaessa syt(x, y):tä Eukleideen algoritmin jakoketjussa y = q 1 x+r 1 (0 < r 1 < x), x = q 2 r 1 +r 2 (0 < r 2 < r 1 ), r 1 = q 3 r 2 +r 3 (0 < r 3 < r 2 ),. r l 2 = q l r l 1 +r l (0 < r l < r l 1 ), r l 1 = q l+1 r l on l + 1 jakolaskua. Jos l = 2k + 1 on pariton, on mainitun havainnon mukaan 1 r l < 2 1 r l 2 < 2 2 r l 4 < < 2 i r l 2i < < 2 k r 1 < 2 k 1 y = 2 l+1 2 y < 2 l 2 y, ja josl = 2k on parillinen, 1 r l < 2 1 r l 2 < 2 2 r l 4 < < 2 k+1 r 2 < 2 k x < 2 l 2 y. Siisy > 2 l 2 eli (otetaan2-kantaiset logaritmit)2log 2 y > l, mistä tulos jo seuraakin.

LUKU 2. LUKUTEORIA. OSA 1 9 Eukleideen algoritmin soveltaminen ei näin ole kovin työlästä, 2log 2 y+1 on verrannollinen y:n binääriesityksen pituuteen (Lause 2.4). Tarkemmin Eukleideen algoritmin laskennallista vaativuutta käsittelee esimerkiksi KNUTH. Useamman kuin kahden kokonaisluvunx 1,x 2,...,x N suurin yhteinen tekijä d = syt(x 1,x 2,...,x N ) määritellään samoin kuin kahdenkin, eli se on suurin kokonaisluku, joka jakaa kaikki luvut x 1,x 2,...,x N. Jälleen vaaditaan, että ainakin yksi luvuista on 0, voidaan sopia, ettäx N 0. Tällainen s.y.t. voidaan laskea soveltamallan 1kertaa Eukleideen algoritmia, sillä Lause 2.8. syt(x 1,x 2,...,x N ) = syt(x 1,syt(x 2,...,x N )) ja lisäksi s.y.t. voidaan kirjoittaa Bézout n muodossa Todistus. Merkitään lyhyyden vuoksi = syt(x 1,syt(x 2,syt(x 3,...,syt(x N 1,x N ) ))) syt(x 1,x 2,...,x N ) = c 1 x 1 +c 2 x 2 + +c N x N. d = syt(x 1,x 2,...,x N ) ja d = syt(x 1,syt(x 2,syt(x 3,...,syt(x N 1,x N ) ))). Bézout n lauseen nojalla ja edelleen syt(x N 1,x N ) = e 1 x N 1 +e 2 x N syt(x N 2,syt(x N 1,x N )) = e 3 x N 2 +e 4 syt(x N 1,x N ) = e 3 x N 2 +e 4 e 1 x N 1 +e 4 e 2 x N jne., eli lopulta nähdään, että joillekin kokonaisluvuillec 1,...,c N d = c 1 x 1 +c 2 x 2 + +c N x N. Tästä seuraa, ettäd d ja siisd d. Toisaaltad jakaax 1 :n ja s.y.t.:n syt(x 2,syt(x 3,...,syt(x N 1,x N ) )). Viimemainittu s.y.t. jakaa x 2 :n ja s.y.t.:n syt(x 3,...,syt(x N 1,x N ) ). Jne. Siispä d jakaa kaikki luvutx 1,x 2,...,x N ja näin ollend d. Kaiken kaikkiaan päätellään, ettäd = d. Jos luvutx 1,x 2,...,x N ovat 0 ja niiden tekijöihinjaot ovat x i = ±p j i1 1 p j i2 2 p j im M (i = 1,2,...,N), missä sovitaan, ettäj ik = 0, mikäli alkulukup k ei olex i :n tekijä, niin ilmeisesti syt(x 1,x 2,...,x N ) = p min(j 11,...,j N1 ) 1 p min(j 12,...,j N2 ) 2 p min(j 1M,...,j NM ) M. Vaikeus tämän tuloksen käytössä on se, ettei tekijöihinjakoja yleisesti tunneta ja niiden etsiminen taas on työlästä. Kokonaislukujen x 1,x 2,...,x N pienin yhteinen jaettava (p.y.j.) on pienin positiivinen kokonaisluku, jonka kaikki luvutx 1,x 2,...,x N jakavat, merkitäänpyj(x 1,x 2,...,x N ). Jotta p.y.j. olisi olemassa, pitää olla x 1,x 2,...,x N 0. Ajatellen edellä olleita tekijöihinjakoja on ilmeisesti pyj(x 1,x 2,...,x N ) = p max(j 11,...,j N1 ) 1 p max(j 12,...,j N2 ) 2 p max(j 1M,...,j NM ) M. Myös p.y.j. saadaan rekursiivisesti Eukleideen algoritmilla ilman tietoa tekijöistä, sillä

LUKU 2. LUKUTEORIA. OSA 1 10 Lause 2.9. pyj(x 1,x 2,...,x N ) = pyj(x 1,pyj(x 2,...,x N )) ja = pyj(x 1,pyj(x 2,pyj(x 3,...,pyj(x N 1,x N ) ))) pyj(x 1,x 2 ) = x 1x 2 syt(x 1,x 2 ). Todistus. Lauseen ensimmäinen kaava seuraa tekijöihinjakokaavasta, sillä p k :n eksponentti pyj(x 1,pyj(x 2,...,x N )):ssä on max(j 1k,max(j 2k,...,j Nk )) ja toisaalta max(j 1k,max(j 2k,...,j Nk )) = max(j 1k,j 2k,...,j Nk ) (k = 1,2,...,M). Samoin toinen kaava seuraa tekijöihinjakokaavasta, sillä alkutekijänp k eksponenttix 1 x 2 :ssa on j 1k +j 2k ja toisaalta max(j 1k,j 2k ) = j 1k +j 2k min(j 1k,j 2k ). Huomautus. Tekijöihinjakokaavasta näkee, että myös useamman luvun s.y.t. on se näiden lukujen (positiivinen) yhteinen tekijä, jonka kaikki muut yhteiset tekijät jakavat, ja tätä käytetään usein määritelmänä. Vastaavasti näkee, että lukujen p.y.j. on se näiden lukujen (positiivinen) yhteinen jaettava, joka jakaa kaikki muut yhteiset jaettavat, ja tätäkin käytetään usein määritelmänä. Näiden vaihtoehtoisten määritelmien nojalla kirjoitetaan usein syt(0, 0,..., 0) = 0 ja myös pyj(0,x 2,...,x n ) = 0. 2.4 Kongruenssilaskenta eli modulaarilaskenta Kongruenssilaskennan idea on, että lasketaan vain kokonaislukujen jakojäännöksillä käyttäen (yhtä tai useampaa) kiinteää jakajaa, ns. modulia m 1. Kongruenssilaskentaa kutsutaan usein myös modulaarilaskennaksi. Sanotaan, että kokonaisluvutxjay ovat kongruentit modulom, merkitään x y mod m (ns. kongruenssi), josx y on jaollinenm:llä. Tämä luetaan myös x on kongruenttiy:n kanssa modulom tai vain x ony modulom. Jos taasx y ei ole jaollinenm:llä, sanotaan, ettäxjay ovat epäkongruentit modulo m ja merkitään x y mod m. Huomaa erityisesti, että x 0 mod m tarkalleen silloin, kunxon jaollinenm:llä, ja että kaikki luvut ovat keskenään kongruentteja modulo1. Kongruenssi x y mod m sanoo, että jaettaessa x ja y modulilla m saadaan sama (jako)jäännös, ts. x ja y kuuluvat samaan (jako)jäännösluokkaan modulo m. Jokainen kokonaisluku kuuluu aina johonkin jäännösluokkaan modulo m ja vain yhteen sellaiseen. Jäännösluokkia modulom on yhtä paljon kuin eri jakojäännöksiä eli m kpl. Ilmeisesti aina x x mod m, ja jos x y mod m, niin myös y x mod m ja x y mod m. Edelleen, josx y mod m jay z mod m, niin myösx z mod m, tällöin kirjoitetaan x y z mod m. Peruslaskutoimitusten osalta nähdään, että Lause 2.10. (i) Josx y mod m jau v mod m, niinx+u y +v mod m. (ii) Joscon kokonaisluku ja x y mod m, niincx cy mod m.

LUKU 2. LUKUTEORIA. OSA 1 11 (iii) Josx y mod m ja u v mod m, niinxu yv mod m. (iv) Josx y mod m ja n on positiivinen kokonaisluku, niinx n y n mod m. Todistus. (i) Josx y = km jau v = lm, niin(x+u) (y +v) = (k +l)m. (ii) Josx y = km, niincx cy = ckm. (iii) Tämä seuraa (ii):sta, sillä xu yu yv mod m. (iv) Tämä seuraa (iii):sta. Kongruensseilla voidaan siis laskea paljolti kuten yhtälöillä, jakolasku ja supistus puolittain eivät kuitenkaan yleisesti ole sallittuja (asiaan palataan kohta). Jos ajatellaan jakojäännöksiä, voidaan laskea millä tahansa kokonaisluvuilla, joilla modulilla jaettaessa on kyseiset jakojäännökset, ja tulokset ovat samat, ts. edustajien valinnasta riippumattomat. Tietyt edustajajoukot, ns. jäännössysteemit, ovat kuitenkin usein esillä: positiivinen jäännössysteemi 0, 1,..., m 1 (ts. tavalliset jakojäännökset); symmetrinen jäännössysteemi (m 1)/2,...,0,1,...,(m 1)/2 parittomallem:lle; symmetrinen jäännössysteemi (m 2)/2,...,0,1,...,m/2 parillisellem:lle; negatiivinen jäännössysteemi (m 1),..., 1,0. Tavallisin on positiivinen jäännössysteemi. Yleisesti mitkä tahansa m kokonaislukua, joista mitkään eivät ole keskenään kongruentteja modulo m, muodostavat jäännössysteemin modulo m. Luvun x jäännöstä modulo m nimenomaan positiivisessa jäännössysteemissä eli jakojäännöstä jaettaessaxmodulillam merkitään jatkossa(x,mod m):llä. Jakolasku eli supistus puolittain ei yleisesti ole sallittua kongruensseissa, vaan vain seuraavassa mielessä: Lause 2.11. xu yu mod m on sama kuin kuin x y mod m/syt(u,m), eli kongruenssista saa supistaa pois kokonaisluvun, mikäli samalla jakaa modulin sen ja supistettavan luvun s.y.t.:llä. (Huomaa erityisesti, että josmon u:n tekijä, niinm/syt(u,m) = 1.) Todistus. Lähdetään ensin liikkeelle siitä, että xu yu mod m eli että (x y)u = km. Merkitään d = syt(u,m) ja u = du sekä m = dm. Silloin ilmeisesti syt(u,m ) = 1 ja m = m/syt(u,m) ja vielä(x y)u = km. Bézout n lauseen mukaan 1 = c 1 u +c 2 m, josta seuraa että x y = c 1 u (x y)+c 2 m (x y) = (c 1 k +c 2 (x y))m, ts. ettäx y mod m/syt(u,m). Lähdetään sitten liikkeelle siitä, ettäx y mod m/d eli ettäx y = km/d. Tästä seuraa, että(x y)d = km ja edelleen että(x y)u = u km. Siispäxu yu mod m. Erityisesti kokonaisluvun, jolla ei ole yhteisiä tekijöitä modulin kanssa, saa supistaa pois kongruenssista moduliin koskematta. Seuraus. Jossyt(x,m) = 1, niin luvuty+kx (k = 0,1,...,m 1) muodostavat jäännössysteemin modulom, olipay mikä tahansa kokonaisluku. Todistus. Lukuja onmkpl. Josy+ix y+jx mod m, missä0 i,j m 1, niinix jx mod m ja Lauseen 2.11 nojallai j mod m. Siisi j = km, mutta koska0 i,j m 1, tämä on mahdollista vain kunk = 0 elii = j. Luvut eivät siis ole kongruentteja keskenään.

LUKU 2. LUKUTEORIA. OSA 1 12 Samantapaisella tekniikalla nähdään välittömästi, että jos syt(x, m) = 1, niin x:llä on inverssi modulom, ts. on sellainen kokonaislukuy, että xy 1 mod m. Tällöin kirjoitetaan myös x 1 y mod m tai 1/x y mod m. 4 Tällainen inverssi saadaan Eukleideen algoritmilla, sillä Bézout n lauseen nojalla1 = c 1 x+c 2 m ja näinx 1 c 1 mod m. Toisaalta, jos syt(x,m) 1, ei x:llä voi olla inverssiä modulo m, kuten helposti voi havaita. Huomaa vielä, että jos x 1 y mod m, niin y 1 x mod m eli (x 1 ) 1 x mod m. Inverssit modulo m (jos olemassa) tottelevat tavallisia potenssilaskusääntöjä. Esimerkiksi (xy) 1 x 1 y 1 mod m ja x n (x 1 ) n (x n ) 1 mod m (n = 1,2... ). Sellaiset jäännössysteemin luvut x, joille syt(x, m) = 1, muodostavat ns. supistetun jäännössysteemin. Vastaavia jäännösluokkia kutsutaan alkuluokiksi modulo m. Helposti voidaan todeta, että jos x y mod m, niin syt(x,m) = syt(y,m). Supistetuissa jäännössysteemeissä on näin aina yhtä monta lukua ja kahden supistetun jäännössysteemin luvut ovat jossain järjestyksessä pareittain kongruentit modulo m. Supistetun jäännössysteemin modulo m lukujen lukumäärää kutsutaan Eulerin (totientti)funktioksi, merkitään φ(m). Se tarvitaan mm. RSA-kryptauksessa. Tavallisin on jälleen positiivisesta jäännössysteemistä muodostettu supistettu jäännössysteemi. Huomaa erityisesti, että jospon alkuluku, niin1,2,...,p 1 muodostaa supistetun jäännössysteemin modulo p ja φ(p) = p 1. 2.5 Jäännösluokkarenkaat ja alkukunnat Kokonaisluvut jakautuvatmjäännösluokkaan sen mukaan minkä luvuni = 0,...,m 1 kanssa ne ovat kongruentteja modulo m. Luokkaa, johon kokonaisluku x kuuluu merkitään x:lla. Huomaa, että silloin x = x + km, olipa k mikä tahansa kokonaisluku. Jäännösluokille voidaan määritellä peruslaskutoimitukset edustajien välityksellä, ts. x±y = x±y, x y = x y ja x n = x n (n = 0,1,... ). Laskutoimituksen tulos ei riipu edustajan valinnasta, kuten on helppo todeta. Kokonaislukujen laskujen ominaisuudet siirtyvät jäännösluokille: (1) + ja ovat liitännäiset sekä vaihdannaiset. (2) Osittelulait pätevät. (3) Jokaisella luokallaaon vastaluokka a, ts. sellainen luokka a, että a+( a) = 0. Jos a = x, niin tietysti a = x. (5) 0 ja1 käyttäytyvät kuten pitää, ts.a+0 = a jaa 1 = a. Lisäksi vielä0 1, josm > 1. 4 Tätä inverssiä ei saa sekoittaa rationaalilukuun1/x.

LUKU 2. LUKUTEORIA. OSA 1 13 Algebrallisesti jäännösluokat modulo m muodostavat ns. renkaan, ks. Luku 4 ja kurssi Algebra 1 tai Symbolinen laskenta, ns. jäännösluokkarenkaan modulo m, merkitään Z m. Näistä Z 1 on harvinaisen mielenkiinnoton (eivätkä sitä kaikki pidä renkaanakaan). Jos syt(x,m) = 1, niin jäännösluokalla x, on myös käänteisluokka x 1, jolle x x 1 = 1. Luonnollisesti, jos x 1 y mod m, niin x 1 = y. Jos taas syt(x,m) 1, niin tällaista käänteisluokkaa ei ole. Näin ollen kaikilla muilla jäännösluokilla kuin 0:lla on käänteisluokka tarkalleen siinä tapauksessa, että modulimon alkuluku. Tällöin jäännösluokkarengasta kutsutaan alkukunnaksi. Alkukunnissa on näin ollen käytössä myös jakolasku, ts. kertominen käänteisluokalla. Pienin ja usein esiintyvä alkukunta on binäärikunta Z 2, jonka alkiot ovat bitit 0 ja 1 (kirjoitetaan useimmiten ilman yläviivoja:0 ja1). Jäännösluokkarenkaiden matriisien ja vektoreiden laskutoimitukset voidaan siirtää luonnollisella tavalla jäännösluokista muodostettujen vektorien ja matriisien laskutoimituksiksi. Käyttöön tulevat näin peruskursseilta tutut matriisien yhteenlasku-, vähennyslasku-, kertomis- ja potenssiinkorotusoperaatiot sekä transponointi. Samoin neliömatriisien determinantit noudattavat tuttuja laskusääntöjä. Aivan samoin kuin peruskursseilla todetaan se, että neliömatriisilla on käänteismatriisi, jos sen determinantilla (joka on Z m :n jäännösluokka) on käänteisluokka. Huomaa, ettei riitä, että determinantti on 0, sillä Cramerin sääntöä käyttäen käänteismatriisia muodostettaessa tarvitaan jakolasku determinantilla modulo m. Alkukunnissa sen sijaan tietysti riittää, että determinantti on 0. 2.6 Suurten kokonaislukujen peruslaskutoimitukset Moderneissa kryptosysteemeissä toiminta perustuu paljolti suurille kokonaisluvuille tehtäville laskutoimituksille. Niiden on oltava suoritettavissa nopeasti ja tehokkaasti. Algoritmien tehokkuutta verrataan usein niihin tarvittavien perusaskelten lukumäärällä verrattuna syötelukujen maksimipituuteen N. Perusaskel voisi olla esimerkiksi numeraalien 0, 1,..., 9 yhteen-, vähennys- tai kertolasku. Yleisin tällainen vertailunotaatio on ns. O-notaatio. SilloinO(f(N)) tarkoittaa kollektiivisesti sellaista funktiotag(n), että jostain rajastan N 0 lähtien g(n) Cf(N), missä C on jokin vakio. Varsinaista laskennallista vaativuutta käsitellään laajemmin Pykälässä 6.1. Tarvittaessa pyöristykseen käytetään tavanomaisia funktioita x (x:n pohja eli suurin kokonaisluku, joka on x) ja x (x:n katto eli pienin kokonaisluku, joka on x). Yhteen- ja vähennyslasku Tavallinen koulussa opittu yhteen- ja vähennyslasku ovat sellaisenaankin sopivia myös ohjelmoitaviksi. N- ja M-pituisten lukujen yhteen- ja vähennyslasku vaativat O(max(N, M)) askelta, kuten on helppo todeta. Kertolasku Tavallinen koulussa opittu kertolasku on sopiva tietokoneellekin, mutta se ei ole likellekään nopein mahdollinen. N- ja M-pituisten lukujen kertolasku vaatii tällä tavoin noin O(NM) askelta, mikä voi olla paljon. Karatsuban algoritmi on nopeampi kuin perinteinen algoritmi. Algoritmi on eräänlainen hajoita ja hallitse -menetelmä. Positiivisten lukujen n ja m kertomiseksi desimaaliesityksessä kirjoitetaan ne ensin muotoon n = a10 k +b ja m = c10 k +d,

LUKU 2. LUKUTEORIA. OSA 1 14 missäa,b,c,d < 10 k ja lukujen maksimipituus on 2k tai 2k 1. Toinen luvuistaa jacvoi olla nolla, mutta eivät molemmat. Ts. kirjoitetaan ainakin toinen luvuista10 k -kantaisessa esityksessä. Silloin nm = (a10 k +b)(c10 k +d) = y10 2k +(x y z)10 k +z, missä x = (a+b)(c+d), y = ac ja z = bd, ts. tarvitaankin vain kolme erillistä pitkää kokonaislukujen kertolaskua (eikä neljä kuten äkkinäisempi luulisi). Kun nämä kolme kertolaskua (a+b)(c+d), ac ja bd edelleen suoritetaan samalla tavoin jakamalla kertolaskut kolmeen lyhyempään kertolaskuun jne., jolloin lopulta päädytään kertotaulun käyttöön, saadaan varsinainen Karatsuban algoritmi (merkitään TULO(n, m) = nm): Karatsuban kertoalgoritmi: 1. Josn = 0 tai m = 0, tulostetaan0ja lopetetaan. 2. Palautetaan tilanne sellaiseen, jossa kertoja ja kerrottava ovat positiivisia: (2.1) Jos n < 0 ja m > 0 tai n > 0 ja m < 0, lasketaan t = TULO( n, m ), tulostetaan t ja lopetetaan. (2.2) Jos n < 0 ja m < 0, lasketaan t = TULO( n, m), tulostetaan se ja lopetetaan. 3. Jos n, m < 10, katsotaan TULO(n, m) taulukosta ja lopetetaan. 4. Jos n 10 tai m 10, kirjoitetaan n ja m muotoon n = a10 k + b ja m = c10 k + d, missäa,b,c,d < 10 k, kuten yllä. Desimaaliesityksessä tämä on helppoa. 5. Lasketaan TULO(a+b, c+d), TULO(a, c) ja TULO(b, d), tulostetaan (helposti saatava) ja lopetetaan. TULO(n,m) = 10 2k TULO(a,c)+10 k (TULO(a+b,c+d) TULO(a,c) TULO(b,d))+TULO(b,d) Menettely pysähtyy, sillä kerrottavien lukujen maksimipituus pienenee noin puoleen joka kierroksella. Jos kerrotaan Karatsuban algoritmilla kaksi N-pituista lukua ja merkitään K(N):llä tarvittavien numeraaleja 0, 1,..., 9 koskevien peruslaskutoimitusten yläarviota, niin ilmeisestikin eräs K(N) saadaan seuraavasta rekursiokaavasta { αn +3K(N/2), josn on parillinen K(N) =, K(1) = 1, αn +3K((N +1)/2), josn on pariton missä kerroin α saadaan tarvittavien yhteen- ja vähennyslaskujen määrästä, käytetystä algoritmista riippuen. Tietyn arvion tarvittavien perusoperaatioiden määrästä antaa Lause 2.12. Jos N = 2 l, niink(n) = (2α+1)3 l α2 l+1 = (2α+1)N log 2 3 2αN.

LUKU 2. LUKUTEORIA. OSA 1 15 Todistus. Ilmeisesti arvo on oikea, kun N = 1. Jos arvo pätee, kun N = 2 l, se pätee myös kun N = 2 l+1, sillä K(2 l+1 ) = α2 l+1 +3K(2 l ) = α2 l+1 +3(2α+1)3 l 3α2 l+1 = (2α+1)3 l+1 α2 l+2. Luonnollisesti lauseesta suurelle pituudellen saatava perusoperaatioiden enimmäismäärä (2α+1)N log 2 3 2αN = O(N log 2 3 ) = O(N 1.585 ) on tuntuvasti pienempi kuin O(N 2 ). Esimerkiksi jos N = 2 12 = 4096, niin N 2 /N log 2 3 = 32. Karatsuban menetelmästä on vieläkin nopeampia versioita, joissa kertolasku jaetaan useampaan kuin kahteen osaan, ks. esimerkiksi MIGNOTTE. Nopeimmat kertolaskualgoritmit perustuvat ns. nopean Fourier n muunnoksen (FFT) käyttöön, ks. esimerkiksi LIPSON tai CRANDALL & POMERANCE. Tällöin perusoperaatioiden lukumäärä ono(n lnn ln(lnn)). Ks. myös kurssi Fourier n menetelmät. Jakolasku Tavanomainen koulussa opetettu ns. pitkäjako on siirrettävissä tietokoneelle, tosin siinä oleva arvausvaihe on jonkin verran hankala toteuttaa tehokkaasti, jos kantaluku on iso, ks. KNUTH. Perusoperaatioiden lukumäärä on O(N 2 ), missä on N on jaettavan pituus. Myös Karatsuban algoritmin tapainen jakolaskualgoritmi on mahdollinen ja hyvin nopea. 5 Peruskursseilta tuttuun Newtonin menetelmään pohjautuva jakolasku on varsin tehokas. Oletetaan aluksi, että sekä jakaja m että jaettava n ovat positiivisia ja merkitään jaettavan pituutta N:llä ja jakajan pituutta M:llä. Koska tapaukset N < M ja N = M ovat helppoja, oletetaan, ettän > M. Merkitään jakolaskunn = qm+r (osamääräq ja jakojäännösr) tulosta seuraavasti: JAKO(n, m) = (q, r). Huomaa, että silloin q = n/m. Lähdetään liikkeelle etsimällä ensin jakajan inverssi. Funktion f(x) = m 1/x nollakohdan eli 1/m:n etsimiseksi saadaan Newtonin iteraatio x i+1 = x i f(x i) f (x i ) = 2x i mx 2 i. Käytännössä, jotta voitaisiin käyttää pelkästään kokonaislukujen kertolaskua, lasketaan kuitenkin l = 10 N /m, eli funktion g(x) = m 10 N /x nollakohta, jolle saataisiin vastaavasti tarkka Newtonin iteraatio x i+1 = 2x i mx2 i 10 = 2x N i x2 i l. Jotta pysyttäisiin puhtaasti kokonaisluvuissa, otetaan käyttöön tämän kokonaisluvuiksi pyöristetty versio m y 2 y i+1 = 2y i i. 10 M 10 N M Esiintyvät 10:n potensseilla jaot ovat desimaalijärjestelmässä triviaaleja. Tarkoitus on saada tätä käyttäen lasketuksi l, jolloin ottamalla pohja n10 N l saadaan kokeilemalla osamäärä ja siitä sitten jakojäännös. Seuraavat ominaisuudet on helppo todeta: 2y m10 M y 2 10 M N 2y y 2 /l, ts. kokonaisluvuksi pyöristys ei vähennä iteraatioarvoja. 5 Tällaisia on kuvattu esimerkiksi kirjassa MIGNOTTE ja monisteessa RUOHONEN, K.: Kryptologia sekä hyvin analysoituna raportissa BURNIKEL, C. & ZIEGLER, J.: Fast Recursive Division. Max Planck Institut für Informatik. Forschungsbericht MPI-I-98-1-022 (1998).

LUKU 2. LUKUTEORIA. OSA 1 16 Jos x l, niin 2x x 2 /l < l. Tarkka iteraatio siis lähestyy l:ää alapuolelta. Koska m/10 M < 1, pyöristetylle iteraatiolle saadaan vastaavasti ( ) m y 2 m y 2 1 2y 2y 1 2y 10 M 10 N M 10 M 10N M l y2 1 ( ) 1 < 2y l y2 2 l+2. Jos x < l, niin 2x x 2 /l > x. Tarkka iteraatio on siis aidosti kasvava niin kauan kun arvot ovat< l. Sama pätee myös pyöristetylle iteraatiolle. Merkitään l = y i +ǫ i, missä ǫ i on virhe. Newtonin menetelmät ovat kvadraattisia, ts. ne kaksinkertaistavat oikeiden numeroiden määrän joka askeleella, niin tässäkin: Josy i < l, niin ǫ i = l y i l 2y i 1 + 1 l y2 i 1 = 1 l ǫ2 i 1. Toistamalla tätä ja huomaamalla, ettäl > 10 N M, saadaan (jälleen olettaen, ettäy i < l) ǫ i 1 l ǫ2 i 1 1 l ( ) 2 1 l ǫ2 i 2 l (1+2+22 + +2 i 1) ǫ 2i 0 = ǫ l1 2i 2i 0 < )(N M) ǫ 10(1 2i 2i 0. Nyt vaaditaan, että10 (1 2i)(N M) ǫ 2i 0 1. Olettaen, että ǫ 0 < 10 N M, tämä on sama kuin N M i log 2 N M log 10 ǫ 0 (totea!). Valitaan 10 y 0 = 10 N M M m tai y 0 = 10 N M 10 M m, kumpi pohja vaiko katto nyt sitten on lähempänä lukua 10 M /m, jolloin ǫ 0 10 N M /2. Näin ollen riittää valita iteraatioiden lukumääräksi N M I = log 2 = log log 10 2 2 (N M) log 2 (log 10 2). Kokonaisluvuiksi pyöristetty iteraatio tuottaa aidosti kasvavan jonon kokonaislukuja, kunnes saadaan välillä [l,l + 2) oleva arvo. Silloin voidaan pysähtyä ja tarkistaa onko saatu arvo vaiko jokin edeltävä arvo oikea l. Menettely kokonaisuudessaan on seuraava (tulostus on JAKO(n,m)): Jakolasku Newtonin menetelmällä: 1. Jos n = 0, tulostetaan(0, 0) ja lopetetaan. 2. Jos m = 1, tulostetaan(n, 0) ja lopetetaan. 3. Jos m < 0, lasketaan JAKO(n, m) = (q, r), tulostetaan( q, r) ja lopetetaan.

LUKU 2. LUKUTEORIA. OSA 1 17 4. Josn < 0, lasketaanjako( n,m) = (q,r), tulostetaan( q 1,m r), josr > 0, tai ( q,0), jos r = 0, ja lopetetaan. 5. Asetetaan N jaettavan n pituus ja M jakajan m pituus. 6. JosN < M tulostetaan(0,n) lopetetaan. 7. Jos N = M, lasketaan osamäärä q. Tämä on helppoa, sillä nyt 0 q 9. (Vaikka kokeilemalla, ellei muuten.) Tulostetaan(q, n mq) ja lopetetaan. 8. Jos N > M, lasketaan 10 M /m. Jälleen tämä on helppoa, sillä 1 10 M /m 10. (Kokeilemalla tai muuten.) 9. Jos 10 M /m 10 M /m 1/2 eli 2 10 M 2m 10 M /m m, asetetaan y 0 10 N M 10 M /m. Muuten asetetaan y 0 10 N M ( 10 M /m + 1). Huomaa, että jälkimmäisessä tapauksessay 0 > l ja iteraatioita on suoritettava vähintään yksi. 10. Toistetaan rekursiokaavaa m y i+1 = 2y i 10 M y 2 i 10 N M lähtien arvostay 0 kunnes i 1 jay i+1 y i. 11. Testataan kertolaskulla mikä luvuistay i,y i 1,... on oikea l ja asetetaan k l. 12. Asetetaan t nk/10 N (oleellisesti kertolasku) ja testataan lisäkertolaskulla kumpi luvuista t vai t + 1 on oikea osamäärä q jakolaskussa JAKO(n, m) = (q, r). Tulostetaan (q, n mq) ja lopetetaan. Kohdan 11. menettely tuottaa oikean osamäärän. Ensinnäkinr < m ja q = n r m n m < 10N m. Edelleen, jos JAKO(10 N,m) = (k,r ), niinr < m ja nk 10 = (qm+r)(10n r ) N m10 N = q qr 10 N + r(10n r ) m10 N. Keskimmäinen termi on välillä( 1,0] ja viimeinen välillä[0,1). Näin ollenq on jokottait+1. Koska maksimi-iteraatiomäärä I on hyvin pieni luokkaa jaettavan pituuden N ja jakajan pituuden M erotuksen logaritmi ja iteraation aikana suoritetaan aina kolme kertolaskua ja yksi vähennyslasku enintään 2M-pituisille kokonaisluvuille, joista vielä osa on vakioita, jakolasku ei ole oleellisesti sen työläämpi kuin kertolasku. Kohtien 7. ja 8. kokeilukaan ei vie monta askelta. Huomautus. Tämäntapaisesta jakolaskusta on monia hieman erilaisia versioita. CRANDALL & POMERANCE käsittelee asiaa laajemmin ja antaa myös lisäviitteitä. Potenssiin korotus Luvunapotenssiin korotusa n peräkkäisillä kertomisilla on liian aikaaviepää, sillä siihen tarvitaan n 1 kertolaskua, kun itse asiassa enintään 2 log 2 n kertolaskuakin riittää:

LUKU 2. LUKUTEORIA. OSA 1 18 Venäläisten talonpoikien menetelmä: 1. Jos n = 0, tulostetaan potenssi 1 ja lopetetaan. 2. Josn < 0, asetetaan a a 1 sekän n. 3. Jos n 1, muodostetaan n:n binääriesitys b j b j 1 b 0, missä j = log 2 n (n:n pituus binäärilukuna miinus yksi, ks. Lause 2.4). 4. Asetetaan i 0 sekäx 1 jay a. 5. Josi = j, niin tulostetaan potenssixy ja lopetetaan. 6. Josi < j ja 6.1 b i = 0, niin asetetaan y y 2 sekäi i+1 ja mennään kohtaan 5. 6.2 b i = 1, niin asetetaan x xy jay y 2 sekäi i+1 ja mennään kohtaan 5. Algoritmin toimivuus seuraa välittömästi binääriesityksestä: ja n = b j 2 j +b j 1 2 j 1 + +b 1 2+b 0 a n = a b j2 j a b j 12 j 1 a b 12 a b 0. Käytännössä lienee mukavaa laskea n:n binääriesitystä sitä mukaa, kun sitä tarvitaan, eikä kerralla alussa. Itse asiassa tämä menettely toimii kaikenlaisille potensseille ja myös silloin, kun kertolasku ei ole vaihdannainen, siis esimerkiksi polynomien tai matriisien potenssiinkorotuksessa. Laskettaessa potensseja modulo m pitää tulot tietysti redusoida koko ajan (positiiviseen) jäännössysteemiin modulom, jotteivat välitulokset kasvaisi suuriksi. Näin voidaan laskea nopeasti hyvinkin korkeita modulaarisiä potensseja. Nimi muuten tulee siitä, että venäläiset talonpojat käyttivät helmitaululla laskiessaan tätä menetelmää kertolaskuun, onhan a n tulkittavissa a:n n:nneksi potenssiksi yhteenlaskun suhteen. Algoritmi on ilmeisesti hyvin vanha. Kokonaisjuuri Ei-negatiivisen kokonaisluvunnl:s kokonaisjuuri 6 on n 1/l. Tavallisin näistä on tietysti kokonaisneliöjuuri (l = 2). Merkitään N:llän:n pituutta binääriesityksessä. Kokonaisjuuren laskemiseen käy samantapainen Newtonin menetelmä kuin jakolaskulle. 7 Funktionx l nnollakohdan elin 1/l :n laskemiseksi saadaan Newtonin iteraatio x i+1 = l 1 l x i + n lx l 1 i Mutta koska halutaan laskea kokonaisluvuilla, otetaankin käyttöön kokonaisluvuiksi pyöristetty iteraatio ( ) 1 n y i+1 = (l 1)y i + l yi l 1 ja käytetään kokonaislukujen yhteen-, kerto- ja jakolaskua. Seuraavat ominaisuudet on helppo todeta (tarvittaessa ääriarvotarkasteluin): 6 Joissain teksteissä se on n 1/l, joissain taasn 1/l kokonaisluvuksi pyöristettynä. 7 Myös aikoinaan koulussakin opittu menetelmä neliöjuuren laskemiseksi kynällä ja paperilla on samantapainen kuin pitkäjako..

LUKU 2. LUKUTEORIA. OSA 1 19 ( ) 1 n (l 1)y + l y l 1 iteraatioarvoja. l 1 l y + n, kokonaisluvuksi pyöristys ei siis kasvata lyl 1 Josx n 1/l jax > 0, niin l 1 x+ n l lx > l 1 n1/l. Tarkka iteraatio siis lähestyy juurta yläpuolelta. Pyöristetylle versiolle saadaan vastaavasti ( ) ( 1 n 1 (l 1)y + (l 1)y + n ) 1 l y l 1 l yl 1 > l 1 y + n l ly 2 l 1 n1/l 2. Josx > n 1/l, niin l 1 x+ n < x. l lxl 1 Tarkka iteraatio on siis aidosti vähenevä. Sama pätee myös pyöristetylle versiolle. Merkitään n 1/l = y i ǫ i ja valitaan lähtöarvoksi y 0 = 2 N/l. Tämä voidaan laskea nopeasti venäläisten talonpoikien algoritmilla. Koskan < 2 N, on y 0 > n 1/l. Arvioidaan ensin tästä saatu ǫ 0 : ǫ 0 = y 0 n 1/l = 2 N/l n 1/l 2 N/l+1 1/l n 1/l = 2 2 (N 1)/l n 1/l n 1/l. Tämäkin Newtonin menetelmä on kvadraattinen. Todetaan asia vain, kun l = 2. (Yleinen tapaus on mutkikkaampi, mutta samantapainen.) Josy i 1,y i > n 1/l, niin ( ) 0 < ǫ i = y i n 1/l l 1 y i 1 + n n 1/l = 1 y l ly l 1 i 1 2 i 1 ly + n ln 1/l y i 1 y l 2 i 1 i 1 < 1 ( y 2 ln 1/l i 1 + n ) n (l 2)/l 2n1/l y i 1 = 1 ln 1/l(y i 1 n 1/l ) 2 = 1 ln i 1. 1/lǫ2 Tätä arviota toistamalla saadaan (kun merkitään lyhyyden vuoksia = 1 ln 1/l ) ǫ i < aǫ 2 i 1 < a a2 ǫ 22 i 2 < < a1+2+22 + +2 i 1 ǫ 2i 0 = a 2i 1 ǫ 2i 0 = a 1 (aǫ 0 ) 2i = ln 1/l ( ǫ0 ln 1/l ) 2i n 1/l l 1 2i. Jos nyt halutaan, että ǫ i < 1, niin riittää ottaa n 1/l l 1 2i 1 eli (totea!) iteraatioita tarvitaan enintään ( I = log 2 1+ log ) 2n. llog 2 l Näin ollen log 2 N:ään verrannollinen määrä iteraatioaskelia riittää, mikä on hyvin vähän. Kokonaisjuuren laskeminen on näin ollen oleellisesti yhtä vaativaa kuin jakolasku. Huomautus. Koska jo n 1/log 2 n = 2, vain enintään n:n pituuden suuruusluokkaa olevat l:n arvot ovat kiinnostavia, muista selvitään pienellä kokeilulla.

LUKU 2. LUKUTEORIA. OSA 1 20 Kokonaisluvuiksi pyöristetty iteraatio tuottaa aidosti vähenevän jonon kokonaislukuja, kunnes saadaan välillä(n 1/l 2,n 1/l ] oleva arvo. Newtonin menetelmä l:nnen kokonaisjuuren laskemiseksi: 1. Josn = 0 tai n = 1, tulostetaann ja lopetetaan. 2. Asetetaan y 0 2 N/l, missän onn:n pituus binääriesityksessä. 3. Toistetaan iteraatiota ( ) 1 n y i+1 = (l 1)y i + l y l 1 i lähtien arvostay 0 kunnes y i+1 y i. 4. Testataan mikä luvuista y i,y i + 1,... on oikea kokonaisjuuri n 1/l, tulostetaan se ja lopetetaan. Satunnaisluvun generointi Satunnaisbittijonoja generoidaan yleisesti käyttäen p:nnen kertaluvun siirtorekisteriä 8 modulo 2: r i a 1 r i 1 +a 2 r i 2 + +a p r i p mod 2, missä a 1,a 2,...,a p ovat vakiobittejä (0 tai 1, a p = 1). Aluksi tarvitaan tietysti siemenbitit r 0,r 1,...,r p 1. Tässä lasketaan koko ajan positiivisessa jäännössysteemissä modulo 2 eli biteillä. Saatava jono r p,r p+1,... ei tietenkään oikeasti ole mitenkään satunnainen, saadaanhan se täysin deterministisellä menettelyllä ja on periodinen (periodin pituus enintään2 p ). Kun valitaan kertoimet a 1,a 2,...,a p 1 sopivasti, saadaan jono kuitenkin käyttäytymään monessa mielessä satunnaisesti, periodi on pitkä jne., ks. esimerkiksi KNUTH. Yksinkertaisimmillaan melkein kaikki kertoimet ovat nollia. Tyyppiä r i r i q +r i p mod 2 olevat siirtorekisterit, missä p on alkuluku ja q valitaan sopivasti, tuottavat usein varsin hyviä satunnaisia bittejä. Seuraavassa taulussa on listattuna eräitä valintoja, missä luku q voidaan korvata myös luvullap q: p q (myösp q käy) p q (myösp q käy) 2 1 1279 216, 418 3 1 2281 715, 915, 1029 5 2 3217 67, 576 7 1, 3 4423 271, 369, 370, 649, 1393, 1419, 2098 17 3, 5, 6 9689 84, 471, 1836, 2444, 4187 31 3, 6, 7, 13 19937 881, 7083, 9842 89 38 23209 1530, 6619, 9739 127 1,7,15,30,63 44497 8575,21034 521 32, 48, 158, 168 110503 25230, 53719 607 105, 147, 273 132049 7000, 33912, 41469, 52549, 54454 8 Klassinen viite on GOLOMB, S.W.: Shift Register Sequences. Aegean Park Press (1982)