Modulaariaritmetiikan käänteisluku

Wikipedia
Loikkaa: valikkoon, hakuun

Modulaariaritmetiikan käänteisluku on modulaari- eli jakojäännösaritmetiikan keskeisiä käsitteitä.

Kokonaisluvut a ja b ovat toistensa käänteislukuja modulo n, missä n on nollasta eroava kokonaisluku, jos

ab\equiv 1\quad (\mbox{mod }n)

Modulaariaritmetiikan käänteislukuja voidaan käyttää mm. kongruenssiyhtälöitä ratkaistaessa.

Kongruenssista ab\equiv 1\quad (\mbox{mod }n) seuraa, että \mbox{gcd}(a,n)=\mbox{gcd}(b,n)=1. Toisin sanoen luvut a ja n (samoin kuin luvut a ja n) ovat keskenään jaottomia.

Tämä on välttämätön ja riittävä ehto käänteisluvun olemassaololle.

Modulaariaritmetiikan käänteislukuja voidaan laskea mm. käyttämällä Eulerin lausetta, Fermat'n pientä lausetta tai laajennettua Eukleideen algoritmia.

Laajennettu Eukleideen algoritmi antaa modulaariaritmetiikan käänteislukujen laskemiseen yleispätevän ja tehokkaan laskumenetelmän.

Laskeminen Fermat'n pienen lauseen avulla[muokkaa | muokkaa wikitekstiä]

Jos n on alkuluku, merk. p, niin

a^{p-1}\equiv 1\quad (\mbox{mod }p)

ts.

a^{p-2}a\equiv 1\quad (\mbox{mod }p)

Luku a^{p-2} on siis eräs luvun a käänteisluku modulo p.

Luvun a^{p-2} pienin ei-negatiivinen jakojäännös modulo p voidaan laskea tehokkaasti modulaariaritmetiikan potenssiinkorotusalgoritmia käyttäen.

Menetelmän rajoituksena on se, että moduulin tulee olla alkuluku.

Laskeminen Eulerin lauseen avulla[muokkaa | muokkaa wikitekstiä]

Jos \mbox{gcd}(a,n)=1, niin Eulerin lauseen mukaan

a^{\varphi(n)}\equiv 1\quad (\mbox{mod }n)

ts.

a^{\varphi(n)-1}a\equiv 1\quad (\mbox{mod }n)

Luku a^{\varphi(n)-1} on siis eräs luvun a käänteisluku modulo n.

Luvun a^{\varphi(n)-1} pienin ei-negatiivinen jakojäännös modulo n voidaan laskea tehokkaasti modulaariaritmetiikan potenssiinkorotusalgoritmia käyttäen.

Menetelmän rajoituksena on se, että Eulerin funktion \varphi(n) arvon laskemiseksi luvun n alkutekijöihin jaon pitää yleensä olla tunnettu.

Laskeminen laajennetun Eukleideen algoritmin avulla[muokkaa | muokkaa wikitekstiä]

Olkoot m ja n kokonaislukuja, 0 < m < n ja \mbox{gcd}(m,n)=1. Luvun m käänteisluku modulo n, merk. \mbox{INV}(m,n) saadaan tällöin rekursiivisesti seuraavasti:

1. Jos m=1, niin \mbox{INV}(m,n)=1

2. Muulloin

\mbox{INV}(m,n)=\frac{1+n(m-\mbox{INV}(\mbox{MOD}(n,m),m))}{m}

missä \mbox{MOD}(n,m) on funktio, joka antaa luvun n pienimmän ei-negatiivisen jakojäännöksen luvulla m jaettaessa.

Esimerkiksi Mathematica-ohjelmistossa modulaariaritmetiikan käänteisluvun laskeva funktio voitaisiin tätä rekursiota käyttäen määrittää yhdellä rivillä:

\mbox{Inv}[m\_,n\_]:=\mbox{If}[m==1,1,(1+n*(m-\mbox{Inv}[\mbox{Mod}[n,m],m]))/m]

Mathematica-ohjelmistosta löytyy tähän tarkoitukseen kuitenkin myös valmiiksi ohjelmoitu funktio.