2 j =

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

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

Lukuteorian kertausta

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

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

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

1 Lukujen jaollisuudesta

MS-A0402 Diskreetin matematiikan perusteet

811120P Diskreetit rakenteet

Salausmenetelmät LUKUTEORIAA JA ALGORITMEJA. Veikko Keränen, Jouko Teeriaho (RAMK, 2006) 3. Kongruenssit. à 3.4 Kongruenssien laskusääntöjä

Tekijä Pitkä Matematiikka 11 ratkaisut luku 2

Liite 1. Laajennettu Eukleideen algoritmi suoraviivainen tapa

LUKUTEORIA johdantoa

1 Tätä dokumenttia, Ketjumurtoluvuista.pdf, saa levittää vain yhdessä lähdekoodinsa

Jäännösluokat. Alkupala Aiemmin on tullut sana jäännösluokka vastaan. Tarkastellaan

Kuvauksista ja relaatioista. Jonna Makkonen Ilari Vallivaara

2017 = = = = = = 26 1

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

ja jäännösluokkien joukkoa

2. Eukleideen algoritmi

Testaa taitosi 1: Lauseen totuusarvo

Ekvivalenssirelaatio. Määritelmä 2 Joukon A binäärinen relaatio R on ekvivalenssirelaatio, mikäli. Jos R on ekvivalenssirelaatio ja a A, niin joukkoa

Diofantoksen yhtälön ratkaisut

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

d Z + 17 Viimeksi muutettu

Rationaaliluvun desimaaliesitys algebrallisesta ja lukuteoreettisesta näkökulmasta

Salausmenetelmät / Osa I Veikko Keränen, Jouko Teeriaho (RAMK, 2006)

LUKUTEORIAN ALKEET HELI TUOMINEN

811120P Diskreetit rakenteet

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

6. Tekijäryhmät ja aliryhmät

a ord 13 (a)

Matematiikan mestariluokka, syksy

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

a b 1 c b n c n

Luonnollisten lukujen ja kokonaislukujen määritteleminen

Valitse kuusi tehtävää! Kaikki tehtävät ovat 6 pisteen arvoisia.

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

JOHDATUS LUKUTEORIAAN (syksy 2017) HARJOITUS 3, MALLIRATKAISUT

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

Esko Turunen Luku 3. Ryhmät

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

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

Algebra I, harjoitus 5,

2.1. Tehtävänä on osoittaa induktiolla, että kaikille n N pätee n = 1 n(n + 1). (1)

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

Lukuteoria. Eukleides Aleksandrialainen (n. 300 eaa)

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

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

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

(d) 29 4 (mod 7) (e) ( ) 49 (mod 10) (f) (mod 9)

802354A Lukuteoria ja ryhmät Luentorunko Kevät Työryhmä: Markku Niemenmaa, Kari Myllylä, Juha-Matti Tirilä, Antti Torvikoski, Topi Törmä

5. Laskutoimitukset eri lukujärjestelmissä

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

Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9

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

4. Eulerin ja Fermat'n lauseet

Lukuteorian kurssi lukioon

Lukualueet Matemaattiset tieteet Oulun yliopisto 2017

Algebran perusteet. 44 ϕ(105) = (105). Näin ollen

j(j 1) = n(n2 1) 3 + (k + 1)k = (k + 1)(k2 k + 3k) 3 = (k + 1)(k2 + 2k + 1 1)

Johdatus matemaattiseen päättelyyn

LUKUTEORIA 1 JYVÄSKYLÄN YLIOPISTO

Algebra I Matematiikan ja tilastotieteen laitos Ratkaisuehdotuksia harjoituksiin 6 (8 sivua) OT. 1. a) Määritä seuraavat summat:

Esimerkki A1. Jaetaan ryhmä G = Z 17 H = 4 = {1, 4, 4 2 = 16 = 1, 4 3 = 4 = 13, 4 4 = 16 = 1}.

MAT Algebra 1(s)

TAMPEREEN YLIOPISTO Pro gradu -tutkielma. Jarmo Niemelä. Primitiivisistä juurista ja. alkuluokkaryhmistä

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

LUKUTEORIAN ALKEET KL 2007

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

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

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

ALKULUVUISTA (mod 6)

Johdatus matematiikkaan

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

a 2 ba = a a + ( b) a = (a + ( b))a = (a b)a, joten yhtälö pätee mielivaltaiselle renkaalle.

y z = (x, y) Kuva 1: Euklidinen taso R 2

Matematiikassa väitelauseet ovat usein muotoa: jos P on totta, niin Q on totta.

6 Relaatiot. 6.1 Relaation määritelmä

Esko Turunen MAT Algebra1(s)

9 Matriisit. 9.1 Matriisien laskutoimituksia

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

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.

missä on myös käytetty monisteen kaavaa 12. Pistä perustelut kohdilleen!

Esitetään tehtävälle kaksi hieman erilaista ratkaisua. Ratkaisutapa 1. Lähdetään sieventämään epäyhtälön vasenta puolta:

Matematiikan ja tilastotieteen laitos Algebra I - Kesä 2009 Ratkaisuehdoituksia harjoituksiin 8 -Tehtävät sivua Heikki Koivupalo ja Rami Luisto

802328A LUKUTEORIAN PERUSTEET Merkintöjä ja Algebrallisia rakenteita

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

Tietojenkäsittelytieteen ja tilastotieteen matematiikkaa 1/137

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

= 3 = 1. Induktioaskel. Induktio-oletus: Tehtävän summakaava pätee jollakin luonnollisella luvulla n 1. Induktioväite: n+1

Merkitse kertolasku potenssin avulla ja laske sen arvo.

a) Mitkä seuraavista ovat samassa ekvivalenssiluokassa kuin (3, 8), eli kuuluvat joukkoon

Vaihtoehtoinen tapa määritellä funktioita f : N R on

Matematiikan tukikurssi, kurssikerta 5

7. Laskutoimitukset eri lukujärjestelmissä 1 / 31

Lineaariset kongruenssiyhtälöryhmät

1 Lineaariavaruus eli Vektoriavaruus

Transkriptio:

1. Modulaariaritmetiikkaa Yksinkertaisissa salausjärjestelmissä käytettävä matematiikka on paljolti lukuteoriaan pohjautuvaa suurten lukujen modulaariaritmetiikkaa (lasketaan kokonaisluvuilla modulo n). Lukuteorian esitykset eivät yleensä kiinnitä huomiota siihen, missä määrin tulokset ovat laskettavia tai puhtaasti teoreettisia. Esimerkiksi aritmetiikan peruslause (jokainen kokonaisluku voidaan esittää oleellisesti yksikäsitteisellä tavalla alkulukujen tulona) on puhtaasti teoreettinen tulos; suurille luvuille ei tunneta mitään tehokasta tapaa löytää k.o. luvun alkutekijöitä. Sen sijaan Eukleideen algoritmi on varsin nopea tapa määrätä kahden luvun suurin yhteinen tekijä. Jotta tämä ero ( laskettava puhtaasti teoreettinen) hieman valkenisi, selvitetään aluksi, miten tietokoneet käsittelevät lukuja; miten luvut esitetään ja miten niillä lasketaan. Tässä yhteydessä on hyvä huomata, että salausjärjestelmien kaipaamat luvut ovat suuria, tyypillisesti sadan usean sadan numeron mittaisia. Tietokoneella esitettävän tiedon perusyksikkö on bitti, jonka arvona voi olla nolla tai yksi (tai oikeammin, koska bitti kuvaa tietokoneen tilaa, arvon pitäisi olla off tai on ). Kun useampia bittejä asetetaan jonoon, on bitit tapana ryhmitellä kahdeksan bitin muodostamiksi tavuiksi. Tällaiset kahdeksan bitin jonot (b 7, b 6,..., b 1, b 0 ) voidaan tulkita luvuksi käyttämällä kaksikantaista lukujärjestelmää, (b 7, b 6,..., b 1, b 0 ) b 7 2 7 + b 6 2 6 + + b 1 2 + b 0. Lukuna yhtä tavua vastaa siis luvut 0, 1, 2,..., 2 7 + 2 6 + + 2 + 1 = 255. 2 Luvuilla laskemiseen tietokoneet käyttävät yhtälailla lukujen esittämistä kaksikantaisina (yhteen- ja kertolaskutaulut ovat helppoja!). Tietokoneen prosessorit osaavat käsitellä usean tavun muodostamaa jonoa yhtenä lukuna. Esimerkiksi nykyaikaisten ns. 64-bittisten tietokoneiden suurin (etumerkitön) kokonaisluku on 63 2 j = 2 64 1 1.8447 10 19. Suuremmat kokonaisluvut esitetään taulukkoina (x n, x n 1,..., x 1, x 0 ), joissa jokaisessa taulukkopaikassa on 64-bittinen luku x j. Tällaisia taulukoituja suureita koneiden prosessorit eivät osaa suoraan käyttää, vaan niiden käsittely tapahtuu ohjelmallisesti, mikä tekee laskemisesta huomattavasti hitaampaa. Tarkastellaan seuraavaksi lukujen yhteen- ja kertolaskun toteuttamisen ideaa (vähennys- ja jakolaskusta ks. esim. [7]). 1.1. Luvuilla laskemisesta. Olkoon b Z, b 2. Kokonaislukujen jakoyhtälöstä 3 seuraa, että jokainen ei-negatiivinen kokonaisluku x on esitettävissä muodossa x = x j b j, missä x j Z, 0 x j b 1. 1 Viimeksi muutettu 10.9.2012. 2 Yhdellä tavulla voidaan siis esittää 256 erilaista merkkiä. Tietokoneen tekstin esityksessä käytetyt ns. ISO Latin -koodaukset perustuvat tähän ideaan. Uudempi Unicode-koodaus UTF-16 käyttää kahta tavua yhden merkin esittämiseen, jolloin on mahdollista esittää 2 16 1 = 65535 eri merkkiä. 3 Kaikille x Z on olemassa yksikäsitteiset q Z ja r Z siten, että x = q b + r ja 0 r < b. 1

Jono (x n, x n 1,..., x 1, x 0 ) b on luvun x b-kantainen esitys. 4 Luvut x j on luvun (engl. number) x b-kantaisen esityksen numeroita (engl. digits). Vaikka tarkoitus on selvittää, miten luvuilla lasketaan 64-bittisellä tietokoneella eli kun b = 2 64, on esimerkkeinä aluksi hyvä miettiä tutun kymmenjärjestelmän ja kaksikantaisen järjestelmän lukuja. Kannattaa huomata, että tietokone osaa laskea vain numeroilla x j, ei itse summalla n x j b j. Summa n x j b j on nyt hyvä tulkita vain taulukoksi, missä kantaluvun b potenssi b j on taulukon j. paikkaan osoittava indeksi: n x j b j x n x n 1... x 1 x 0 2 Tarkastellaan kahden b-kantaisen luvun yhteenlaskua. Olkoot x = x j b j ja y = y j b j, missä x j, y j Z ja x j, y j {0,..., b 1}. Summalle on x + y = (x j + y j ) b j, mutta tässä voi olla x j + y j > b 1. Koska x j b 1 ja y j b 1, on kuitenkin x j + y j 2(b 1). Jos x j + y j > b 1, on luvulle z j := x j + y j b b 2. Siis (x j + y j ) b j = z j b j + b j+1. Tämä yhtälö merkitsee, että summan x + y j + 1. numeroon tulee summan x j+1 + y j+1 lisäksi muistinumero, jos x j + y j > b 1. Muistinumero ei kuitenkaan vaikuta merkitsevämpiin numeroihin x k + y k, k > j + 1, koska x j+1 + y j+1 b + 1 b 1. Tämä antaa seuraavan algoritmin summan laskemiseen (1) Asetetaan muistinumeroksi m 0 := 0. (2) Kun j = 0, 1,..., n, asetetaan (a) jos x j + y j + m j b 1, olkoon z j := x j + y j + m j ja m j+1 := 0, (b) muuten z j := x j + y j b + m j ja m j+1 := 1. (3) Lopuksi z n+1 := m n+1. (4) Palautetaan n+1 z j b j. Tarkastellaan kahden b-kantaisen luvun kertolaskua. Olkoot x = x j b j ja y = y k b k, missä x j, y j Z ja x j, y j {0,..., b 1}. Tulo x voidaan laskea summana x y = x y k b k, missä x y k b k = x j y k b j+k. k=0 4 b = 10: desimaalinen; b = 2: binäärinen; b = 8: oktaalinen; b = 16: heksadesimaalinen; b = 60: heksagesimaalinen. Heksadesimaaliluvut x 0 {10,..., 15} esitetään yleensä kirjaimin A,..., F. Usein b kantaisen luvun numeroita x j kutsutaan merkeiksi ja merkinnän (x n, x n 1,..., x 1, x 0 ) b sijasta käytetään tiiviimpää (x n x n 1... x 1 x 0 ) b tai vain x n x n 1... x 1 x 0. k=0

Nämä kaavat voidaan lukea seuraavasti: vasemman kaavan mukaan tulo x y voidaan laskea yhteenlaskulla ja oikeanpuoleisen kaavan nojalla summassa esiintyvät tulot x y k b k ovat tulojen x j y k b j+k summia. Tulot x j y k b j+k puolestaan ovat b-kantaisen järjestelmän yksinumeroisten lukujen x j ja y k tuloja siirrettynä indeksin j + k osoittamaan paikkaan. Koska x j b 1 ja y k b 1, on x j y k (b 1) 2 = b (b 2) + 1, joten tulosta x j y k syntyvä muistinumero on suurimmillaan b 2, jolloin tulosta x j y k jää indeksin j + k osoittamaan paikkaan numero yksi. 1.2. 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). 5 Kerrattakoon määritelmiä ja eräitä merkintöjä. Määritelmä 1.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 1.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 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) 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. 6 Tämä on täydellinen järjestys. Suurin yhteinen tekijä on siis jaollisuusjärjestyksen mielessä yhteisistä tekijöistä suurin. 1.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. 5 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). 6 N := {x Z x 0}, Z + := {x Z x > 0}. 3

Otetaan käyttöön seuraavat funktiot: Jokaiselle x R asetetaan (ks. [6, 1.2.4] tai [3, 3.1] 7 ) 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, (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. Väite 1.3. Eukleideen algoritmilla (1.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ä.) 4 Todistus. Tuloksen pitäisi olla tuttu Lukuteorian alkeet -kurssilta [15]. Esimerkki 1.4. Eukleideen algoritmi luvuille 126 ja 35: 126 = 3 35 + 21, 35 = 1 21 + 14, 21 = 1 14 + 7, 14 = 2 7. 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. 7 Vanhemmassa kirjallisuudessa luvun x lattialle käytetään merkintää [x].

1.4. Laajennettu Eukleideen algoritmi. Olkoot luvut l, q i ja r i kuten Eukleideen algoritmissa (1.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 (1.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, (1.3) t i+1 = t i 1 q i t i. Tällöin yhtälöstä (1.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 (1.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 (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 kaikille 0 i l ja r l = syt(r 0, r 1 ). Lisätietoa laajennetusta Eukleideen algoritmista löytyy kirjoista [2, 3.2], [7, 4.5.2]. Esimerkki 1.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: 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ää. 5

Lause 1.6. Olkoot r 0, r 1 Z, 0 < r 1 < r 0, ja l Eukleideen algoritmin (1.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 (1.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ä (1.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 (1.5) todistus: Kun i = l, on r l = 1 = φ 0. Epäyhtälö (1.5) on siis voimassa ainakin, kun i = l. Ennenkuin jatketaan, todetaan että Eukleideen algoritmin (1.1) osamäärille q i on voimassa q i 1, kun 1 i l 1, ja q l 2. Nimittäin, Eukleideen algoritmin (1.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 (1.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ö (1.5) on tosi kaikille indekseille i > k. 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ö (1.5) on tosi myös indeksille i = k. Huomautuksia 1.7. a) Voidaan osoittaa, että Eukleideen algoritmille (1.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 (1.1) on l = n riviä. Ks. [7, 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öä). 6

1.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. 8 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. 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. 8 Merkinnän a b mod n sijasta kirjallisuudesta saattaa löytää myös merkinnät a b (mod n) ja a b (n). 7

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 1.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. 8