diszkr et matematika 9. el}oad as - ms.sapientia.romgyongyi/diszkretmat/9_szamelmelet.pdf · diszkr...

30
Diszkr´ et matematika 9.el˝oad´ as M ´ ARTONGy¨ongyv´ er [email protected] Sapientia Egyetem, Matematika-Informatika Tansz´ ek Marosv´ as´ arhely, Rom´ ania 2018,˝oszif´ el´ ev M ´ ARTON Gy¨ ongyv´ er 2018, Diszkr´ et matematika

Upload: dodang

Post on 07-May-2019

263 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Diszkr et matematika 9. el}oad as - ms.sapientia.romgyongyi/DiszkretMat/9_Szamelmelet.pdf · Diszkr et matematika 9. el}oad as MARTON Gy ongyv er mgyongyi@ms.sapientia.ro Sapientia

Diszkret matematika9. eloadas

MARTON [email protected]

Sapientia Egyetem,Matematika-Informatika TanszekMarosvasarhely, Romania

2018, oszi felev

MARTON Gyongyver 2018, Diszkret matematika

Page 2: Diszkr et matematika 9. el}oad as - ms.sapientia.romgyongyi/DiszkretMat/9_Szamelmelet.pdf · Diszkr et matematika 9. el}oad as MARTON Gy ongyv er mgyongyi@ms.sapientia.ro Sapientia

Mirol volt szo az elmult eloadason?

a base64 kodolasi technika

Szamelmelet

prımszamok, alapfogalmakprımtesztelo algoritmusokkongruenciak

MARTON Gyongyver 2018, Diszkret matematika

Page 3: Diszkr et matematika 9. el}oad as - ms.sapientia.romgyongyi/DiszkretMat/9_Szamelmelet.pdf · Diszkr et matematika 9. el}oad as MARTON Gy ongyv er mgyongyi@ms.sapientia.ro Sapientia

Mirol lesz szo?

a prımszamtetel

prımszamok, tulajdonsagok, sejtesek

maradekosztalyok, maradekrendszerek

modularis hatvanyozas

a kis Fermat-tetel

a kis-Fermat tetelen alapulo prımteszt

az Euler fuggveny, az Euler-tetel

az Euler fuggvenyhez kapcsolodo osszefuggesek

a Miller-Rabin prımteszt

hatvanyok es generator elemek

MARTON Gyongyver 2018, Diszkret matematika

Page 4: Diszkr et matematika 9. el}oad as - ms.sapientia.romgyongyi/DiszkretMat/9_Szamelmelet.pdf · Diszkr et matematika 9. el}oad as MARTON Gy ongyv er mgyongyi@ms.sapientia.ro Sapientia

A prımszamtetel

1. ertelmezesπ(x) az x-nel nem nagyobb prımszamok szamat jeloli, ahol x egy pozitıv valosszam.

Peldaul: π(10) = 4, π(100) = 25.

A prımszamtetel a prımszamok eloszlasat ırja le, amelyet Gauss adott meg,1793-ban, mint sejtest, bizonyıtani Hadamard bizonyıtotta be 1896-ban:

π(x) ∼ xln(x)

, ahol ln(x) a termeszetes logaritmusfuggveny.

Tetel formajaban:

1. tetel

limx→∞

π(x)x

ln(x)= 1

MARTON Gyongyver 2018, Diszkret matematika

Page 5: Diszkr et matematika 9. el}oad as - ms.sapientia.romgyongyi/DiszkretMat/9_Szamelmelet.pdf · Diszkr et matematika 9. el}oad as MARTON Gy ongyv er mgyongyi@ms.sapientia.ro Sapientia

A prımszamtetel

Nagyobb x ertekekre a kovetkezo megkozelıtesek pontosabbak:

π(x) ∼ xln(x)−1

,

π(x) ∼ xln(x)−1− 1

ln(x)

.

1. feladat

A megadott kepletek segıtsegevel ırjunk Python fuggvenyt, amely megadja aprımszamok szamat x-ig.

import eload8, math

def primszT (x):

L = eload8.eratL(x)

k = len(L) #x-ig a primszamok szama

lg = math.log(x)

return k, x / lg, x / (lg - 1), x / (lg-1-1/lg)

>>> primszT(100)

(25, 21.71472409516259, 27.73794157864211, 29.515738713193304)

MARTON Gyongyver 2018, Diszkret matematika

Page 6: Diszkr et matematika 9. el}oad as - ms.sapientia.romgyongyi/DiszkretMat/9_Szamelmelet.pdf · Diszkr et matematika 9. el}oad as MARTON Gy ongyv er mgyongyi@ms.sapientia.ro Sapientia

A prımszamtetel

A prımszamtetel alapjan allıthato, hogy az x-ik prımszam megkozelıtoleg:

x · ln(x),

vagy pontosabban

x · (ln(x) + ln(ln(x)− 1)).

Tulajdonsagok, sejtesek:

Ikerprımek: Azok a (p, p + 2) szamparok, ahol p prımszam es p + 2 isprımszam. Peldaul: (3, 5), (5, 7), (11, 13).

Ikerprım-sejtes: Vegtelen sok ikerprım letezik.

Goldbach-sejtes:

Minden 2-nel nagyobb paros szam felırhato ket prımszamosszegekent.Minden 5-nel nagyobb paratlan szam felırhato harom prımszamosszegekent.

Wilson tetel: Egy p szam akkor es csakis akkor prımszam, ha(p − 1)! = 1 · 2 . . . (p − 2) · (p − 1), p-vel valo osztasi maradeka p − 1.

MARTON Gyongyver 2018, Diszkret matematika

Page 7: Diszkr et matematika 9. el}oad as - ms.sapientia.romgyongyi/DiszkretMat/9_Szamelmelet.pdf · Diszkr et matematika 9. el}oad as MARTON Gy ongyv er mgyongyi@ms.sapientia.ro Sapientia

Maradekosztalyok, maradekrendszerek

a (mod m) szerinti osztasi maradekok alapjan a szamokat kulonbozohalmazokba csoportosıthatjuk ⇒ (mod m) szerinti maradekosztalyok

(mod 5) szerint ot maradekosztalyt kulonboztetunk meg:

· · · ≡ −10 ≡ −5 ≡ 0 ≡ 5 ≡ 10 ≡ . . . (mod 5)· · · ≡ −9 ≡ −4 ≡ 1 ≡ 6 ≡ 11 ≡ . . . (mod 5)· · · ≡ −8 ≡ −3 ≡ 2 ≡ 7 ≡ 12 ≡ . . . (mod 5)· · · ≡ −7 ≡ −2 ≡ 3 ≡ 8 ≡ 13 ≡ . . . (mod 5)· · · ≡ −6 ≡ −1 ≡ 4 ≡ 9 ≡ 14 ≡ . . . (mod 5)

a-nak (mod m) szerint a legkisebb nem negatıv osztasi maradeka r , hafennall: a = q ·m + r , ahol 0 ≤ r ≤ m − 1

teljes maradekrendszer: az a1, a2, . . . , am szamok teljes maradekrendszertalkotnak m szerint, ha paronkent inkongruensek (mod m) szerint

0, 1, 2, ...,m − 1 teljes maradekrendszert alkotnak (mod m) szerint,

0, 1, 2, 3, 4 teljes maradekrendszert alkotnak (mod 5) szerint

MARTON Gyongyver 2018, Diszkret matematika

Page 8: Diszkr et matematika 9. el}oad as - ms.sapientia.romgyongyi/DiszkretMat/9_Szamelmelet.pdf · Diszkr et matematika 9. el}oad as MARTON Gy ongyv er mgyongyi@ms.sapientia.ro Sapientia

Maradekosztalyok, maradekrendszerek

redukalt maradekrendszer: a teljes maradekrendszer azon ai elemeiamelyekre fennall: lnko(ai ,m) = 1.

Peldak

(mod 6) szerint 1, 5 redukalt maradekrendszert alkotnak,

(mod 6) szerint 0, 1, 2, 3, 4, 5 teljes maradekrendszert alkotnak,

MARTON Gyongyver 2018, Diszkret matematika

Page 9: Diszkr et matematika 9. el}oad as - ms.sapientia.romgyongyi/DiszkretMat/9_Szamelmelet.pdf · Diszkr et matematika 9. el}oad as MARTON Gy ongyv er mgyongyi@ms.sapientia.ro Sapientia

A kis Fermat-tetel

legjelentosebb szamelmeleti eredmeny

nem ugyanaz, mint a nagy Fermat-tetel (xn + yn = zn)

2. tetelHa m egy prımszam es x egy pozitıv egesz szam, ugy hogy 1 ≤ x ≤ m − 1,akkor

xm−1 ≡ 1 (mod m).

Pelda: legyen m = 11, x = 3, ekkor fennall: 310 = 59049 ≡ 1 (mod 11)

masfelol felırhatok a kovetkezok:

1 · x = 1 · 3 ≡ 3 (mod 11) 6 · x = 6 · 3 ≡ 7 (mod 11)2 · x = 2 · 3 ≡ 6 (mod 11) 7 · x = 7 · 3 ≡ 10 (mod 11)3 · x = 3 · 3 ≡ 9 (mod 11) 8 · x = 8 · 3 ≡ 2 (mod 11)4 · x = 4 · 3 ≡ 1 (mod 11) 9 · x = 9 · 3 ≡ 5 (mod 11)5 · x = 5 · 3 ≡ 4 (mod 11) 10 · x = 10 · 3 ≡ 8 (mod 11)

a fentiek alapjan hogyan bizonyıtjuk a tetelt?

MARTON Gyongyver 2018, Diszkret matematika

Page 10: Diszkr et matematika 9. el}oad as - ms.sapientia.romgyongyi/DiszkretMat/9_Szamelmelet.pdf · Diszkr et matematika 9. el}oad as MARTON Gy ongyv er mgyongyi@ms.sapientia.ro Sapientia

A kis Fermat-tetel

Ha egy m szamra nem teljesul a fenti feltetel, akkor az egyertelmuenosszetett szam.

Ha egy m szamra teljesul a fenti feltetel, akkor az nem egyertelmuenprımszam: vannak olyan osszetett szamok amelyekre letezik olyan xszam, hogy 1 ≤ x ≤ m − 1 es xm−1 ≡ 1 (mod m), ezeket a szamokat xalapu Fermat-fele alprımeknek hıvjuk.

Pl. 2-es alapu Fermat-fele alprım: 341, mert 2340 ≡ 1 (mod 341),ugyanakkor 341 = 11 · 31.

Carmichael-szamok: olyan osszetett szamok amelyek eseteben, mindenx-re, ahol lnko(x ,m) = 1 es 1 ≤ x ≤ m − 1 fennall xm−1 ≡ 1 (mod m).

A Fermat-tetel a Carmichael szamok miatt nem alkalmazhatoprımszam-tesztelo algoritmusban.

A legkisebb Carmichael-szam: 561 = 3 · 11 · 17.

A Carmichael-szamok szama vegtelen.

A kis-Fermat tetel az elso kiindulasi pont a veletlenszuen mukodoprımtesztelo algoritmusokhoz.

MARTON Gyongyver 2018, Diszkret matematika

Page 11: Diszkr et matematika 9. el}oad as - ms.sapientia.romgyongyi/DiszkretMat/9_Szamelmelet.pdf · Diszkr et matematika 9. el}oad as MARTON Gy ongyv er mgyongyi@ms.sapientia.ro Sapientia

A kis-Fermat tetelen alapulo prımteszt

2. feladat

Irjunk Python fuggvenyt, amely a kis-Fermat tetel alapjan vegzi a prımtesztelest.

Az algoritmus bemenete m, egy paratlan szam es egy t biztonsagi parameter. At ertekeben azt adjuk meg, hogy hany x szamot generaljon veletlenszeruen azalgoritmus. A kimenet True ha az m szam prımszam, figyelembe veve a tbiztonsagi parametert, vagy False, ha a szam osszetett.

A gcd legnagyobb kozos osztot, a pow modularis hatvanyerteket szamol,beepıtett fuggvenyek.

from random import randint

from math import gcd

def fermatT(m, t):

for i in range(0, t):

x = randint(2, m - 1)

if gcd(x, m) != 1: return False

y = pow(x, m - 1, m)

if y != 1: return False

return True

MARTON Gyongyver 2018, Diszkret matematika

Page 12: Diszkr et matematika 9. el}oad as - ms.sapientia.romgyongyi/DiszkretMat/9_Szamelmelet.pdf · Diszkr et matematika 9. el}oad as MARTON Gy ongyv er mgyongyi@ms.sapientia.ro Sapientia

A kis-Fermat tetelen alapulo prımteszt

Mi lesz az eredmenye a kovetkezo fuggvenyhıvasoknak?

>>> fermatT(561, 20)

>>> fermatT(1615681, 20)

>>> fermatT(1909001, 20)

>>> fermatT(2508013, 10)

>>> fermatT(935794081, 20)

>>> fermatT(2489462641, 20)

Milyen szamok 561, 1615681, 1909001, 2508013, . . . ? ⇒ Charmichael szamok

561 = 3 · 11 · 171615681 = 23 · 199 · 3531909001 = 41 · 101 · 461

MARTON Gyongyver 2018, Diszkret matematika

Page 13: Diszkr et matematika 9. el}oad as - ms.sapientia.romgyongyi/DiszkretMat/9_Szamelmelet.pdf · Diszkr et matematika 9. el}oad as MARTON Gy ongyv er mgyongyi@ms.sapientia.ro Sapientia

Modularis hatvanyozas

Hatarozzuk meg 343 (mod 100) erteket: mindenegyes negyzetre emeles utanmeghatarozzuk az osztasi maradekot es ezzel az ertekkel dolgozunk tovabb.

3 ≡ 3 (mod 100)32 ≡ 9 (mod 100)34 ≡ 81 (mod 100)38 ≡ 61 (mod 100)

316 ≡ 21 (mod 100)332 ≡ 41 (mod 100)

343 = 332 · 38 · 32 · 31 = 41 · 61 · 9 · 3 = 27 (mod 100)

MARTON Gyongyver 2018, Diszkret matematika

Page 14: Diszkr et matematika 9. el}oad as - ms.sapientia.romgyongyi/DiszkretMat/9_Szamelmelet.pdf · Diszkr et matematika 9. el}oad as MARTON Gy ongyv er mgyongyi@ms.sapientia.ro Sapientia

Modularis hatvanyozas

3. feladat

Hatarozzuk meg xn (mod m) erteket.

def modpow (x, n, m):

res = 1

while n != 0:

if n % 2 == 1: res = (res * x) % m

x = (x * x ) % m

n = n // 2

return res

MARTON Gyongyver 2018, Diszkret matematika

Page 15: Diszkr et matematika 9. el}oad as - ms.sapientia.romgyongyi/DiszkretMat/9_Szamelmelet.pdf · Diszkr et matematika 9. el}oad as MARTON Gy ongyv er mgyongyi@ms.sapientia.ro Sapientia

Az Euler-tetel, az Euler-fuggveny

a Fermat-tetel altalanosıtasa,

a Fermat-tetel: adott hatvanyertek viselkedeserol ad informaciot egy prımmodulus szerint.

az Euler-tetel: adott hatvanyertek viselkedeserol ad informaciot egytetszoleges modulus szerint.

2. ertelmezesLegyen n pozitıv egesz szam, ekkor az Euler-fuggveny meghatarozza azokat apozitıv egesz szamokat, amelyek nem nagyobbak mint n es relatıv prımek n-nel.φ(n)-nel jeloljuk.

Pelda az Euler-fuggveny ertekeire, ha 1 ≤ n ≤ 12:

n 1 2 3 4 5 6 7 8 9 10 11 12

φ(n) 1 1 2 2 4 2 6 4 6 4 10 4

MARTON Gyongyver 2018, Diszkret matematika

Page 16: Diszkr et matematika 9. el}oad as - ms.sapientia.romgyongyi/DiszkretMat/9_Szamelmelet.pdf · Diszkr et matematika 9. el}oad as MARTON Gy ongyv er mgyongyi@ms.sapientia.ro Sapientia

Az Euler-tetel, az Euler-fuggveny

3. tetelHa x ,m pozitıv egesz szamok, amelyekre lnko(x ,m) = 1, akkor:

xφ(m) ≡ 1 (mod m).

Pelda: legyen m = 12, x = 5, ekkor fennall φ(12) = 4 es:

5φ(12) = 54 = 625 ≡ 1 (mod 12)

masfelol a 12-nel kisebb es 12-vel relatıv prımszamok a kovetkezoek: 1, 5,7, 11

felırhatok a kovetkezok:

1 · a = 1 · 5 ≡ 5 (mod 12)5 · a = 5 · 5 ≡ 1 (mod 12)7 · a = 7 · 5 ≡ 11 (mod 12)11 · a = 11 · 5 ≡ 7 (mod 12)

a fentiek alapjan hogyan bizonyıtjuk a tetelt?

MARTON Gyongyver 2018, Diszkret matematika

Page 17: Diszkr et matematika 9. el}oad as - ms.sapientia.romgyongyi/DiszkretMat/9_Szamelmelet.pdf · Diszkr et matematika 9. el}oad as MARTON Gy ongyv er mgyongyi@ms.sapientia.ro Sapientia

Az Euler fuggvenyhez kapcsolodo osszefuggesek

4. tetelHa p egy prımszam, akkor φ(p) = p − 1. A tetel fordıtottja is igaz, azaz, ha pegy pozitıv egesz szam, amelyre fennall, hogy φ(p) = p − 1, akkor p prımszam.

Peldaul: φ(61) = 60.

5. tetel

Ha p egy prımszam es a egy pozitıv egesz szam, akkor φ(pa) = pa − pa−1.

Peldaul: φ(256) = φ(28) = 28 − 27 = 128.

6. tetelHa a es b ket, egymassal relatıv prımszam, akkor φ(a · b) = φ(a) · φ(b).

Peldaul: φ(75) = φ(3 · 25) = φ(3) · φ(25) = 2 · (52 − 5) = 40.

MARTON Gyongyver 2018, Diszkret matematika

Page 18: Diszkr et matematika 9. el}oad as - ms.sapientia.romgyongyi/DiszkretMat/9_Szamelmelet.pdf · Diszkr et matematika 9. el}oad as MARTON Gy ongyv er mgyongyi@ms.sapientia.ro Sapientia

Az Euler fuggvenyhez kapcsolodo osszefuggesek

7. tetelHa x prımtenyezos felbontasa: x = pa1

1 · pa22 · ... · p

ann , akkor

φ(x) = x ·(

1− 1

p1

)·(

1− 1

p2

)· · · · ·

(1− 1

pn

)Kiindulopont a bizonyıtashoz, ha φ(x)− t felırjuk a kovetkezokeppen:

φ(x) = (pa11 − pa1−1

1 ) · (pa22 − pa2−1

2 ) . . . (pann − pan−1

n ).

Peldak:

φ(60) = (22 − 21) · (3− 1) · (5− 1) = 16, mert 60 = 22 · 3 · 5

φ(100) = 100 ·(

1− 1

2

)·(

1− 1

5

)= 40, mert 100 = 22 · 52

MARTON Gyongyver 2018, Diszkret matematika

Page 19: Diszkr et matematika 9. el}oad as - ms.sapientia.romgyongyi/DiszkretMat/9_Szamelmelet.pdf · Diszkr et matematika 9. el}oad as MARTON Gy ongyv er mgyongyi@ms.sapientia.ro Sapientia

A Miller-Rabin valoszınusegi prımteszt

az algoritmus biztosan megallapıtja a bemenetrol, hogy osszetett szam,azonban azt a megallapıtast, hogy prımszam csak nagy valoszınuseggelallıtja

a gyakorlatban nagy szamok, legalabb 300 szamjegyu szamokvizsgalatanal hasznaljak, miutan megallapıtottak, hogy a bemenetneknincsenek kis prımosztoi

az algoritmus a kovetkezo tetelen alapszik:

8. tetelHa az m prımszam, akkor minden olyan x szam eseteben, ahol lnko(x , m) = 1,es m − 1 = 2s r , ahol r paratlan szam, fennall a kovetkezo ket osszefugges(kriterium) kozul valamelyik

x r ≡ 1 (mod m),

∃j , 0 ≤ j ≤ s − 1 : x2j r ≡ m − 1 (mod m).

MARTON Gyongyver 2018, Diszkret matematika

Page 20: Diszkr et matematika 9. el}oad as - ms.sapientia.romgyongyi/DiszkretMat/9_Szamelmelet.pdf · Diszkr et matematika 9. el}oad as MARTON Gy ongyv er mgyongyi@ms.sapientia.ro Sapientia

A Miller-Rabin valoszınusegi prımteszt

A bizonyıtas vazlata:

a kis Fermat tetel alapjan fennall, ha m prımszam: xm−1 ≡ 1 (mod m),

fenn all az is, hogy a szamsorozat minden eleme (kezdve a masodikelemtol) egyenlo az elozo szam negyzetevel

x r , x2·r = (x r )2, x22·r = (x2·r )2, . . . x2s−1·r , x2s ·r = (x2s−1·r )2

ket eset lehetseges:

a lista elso eleme kongruens 1 modulo m, vagya lista elso elemei nem lesznek kongruensek 1 modulo m-el, de egyadott elemtol kezdodoen azonban a listaelemek kongruensek lesznek1 modulo m-el. Ez azt jelenti, hogy van egy olyan b szam a listabanamelyre fenn all:

b 6≡ 1 (mod m) es b2 ≡ 1 (mod m).

Ez a helyzet azonban csak ugy allhat elo ha b ≡ (m − 1) ≡ −1 (mod m)

MARTON Gyongyver 2018, Diszkret matematika

Page 21: Diszkr et matematika 9. el}oad as - ms.sapientia.romgyongyi/DiszkretMat/9_Szamelmelet.pdf · Diszkr et matematika 9. el}oad as MARTON Gy ongyv er mgyongyi@ms.sapientia.ro Sapientia

A Miller-Rabin valoszınusegi prımteszt

Megallapıthato, hogy:

a tetel fordıtottja nem igaz, azaz ha fennall a ket kriterium kozulvalamelyik abbol nem kovetkezik az hogy a szam prım, mert vannak olyanm osszetett szamok, melyekre ∃ x : 1 ≤ x ≤ m − 1, melyre fennall a fentiket osszefugges kozul valamelyik.

az m osszetett szam eseteben maximum φ(m)/4 az ilyen x szamok szama.

ha t = 10 veletlenszeruen generalt x szamra fennall a kriterium, akkor azm nagyon nagy valoszınuseggel prımszam.

a Miller-Rabin valoszınusegi prımteszt eseteben a bemenet az m ≥ 3paratlan szam es t ≥ 1 biztonsagi parameter. A kimenet True, ha az mszam prımszam figyelembe veve a t biztonsagi parametert; es False, haosszetett.

MARTON Gyongyver 2018, Diszkret matematika

Page 22: Diszkr et matematika 9. el}oad as - ms.sapientia.romgyongyi/DiszkretMat/9_Szamelmelet.pdf · Diszkr et matematika 9. el}oad as MARTON Gy ongyv er mgyongyi@ms.sapientia.ro Sapientia

A Miller-Rabin valoszınusegi prımteszt

Pelda: legyen m = 61, t = 4, m − 1 = 22 · 15

x j Magyarazat

3 0 315 ≡ 60 (mod 61)

7 0 715 ≡ 11 (mod 61)

1 72·15 ≡ 60 (mod 61)

42 0 4215 ≡ 1 (mod 61)

24 0 2415 ≡ 11 (mod 61)

1 242·15 ≡ 60 (mod 61)→ nagyon nagy valoszınuseggel prım

Megjegyzes: mind a negy veletlenszeruen valasztott x szam eseteben fennall akriterium, tehat megallapıthato hogy a szam nagy valoszınuseggel prım

MARTON Gyongyver 2018, Diszkret matematika

Page 23: Diszkr et matematika 9. el}oad as - ms.sapientia.romgyongyi/DiszkretMat/9_Szamelmelet.pdf · Diszkr et matematika 9. el}oad as MARTON Gy ongyv er mgyongyi@ms.sapientia.ro Sapientia

A Miller-Rabin valoszınusegi prımteszt

Legyen m = 91, t = 4, m − 1 = 90 = 2 · 45

x j Magyarazat

16 0 1645 ≡ 1 (mod 91)→ valoszınuleg prım

75 0 7545 ≡ 90 (mod 91)→ valoszınuleg prım

13 0 1345 ≡ 13 (mod 61)→ biztosan osszetett

Megjegyzes: nem kell t = 4 tesztet elvegezni, mert a harmadik x ertekeseteben nem all fenn egyik kriterium sem, tehat megallapıthato, hogy a szambiztosan osszetett.

MARTON Gyongyver 2018, Diszkret matematika

Page 24: Diszkr et matematika 9. el}oad as - ms.sapientia.romgyongyi/DiszkretMat/9_Szamelmelet.pdf · Diszkr et matematika 9. el}oad as MARTON Gy ongyv er mgyongyi@ms.sapientia.ro Sapientia

A Miller-Rabin valoszınusegi prımteszt

4. feladat

Irjunk Python fuggvenyt, amely a 7. tetel alapjan vegzi a prımtesztelest. A bemenetm, egy paratlan szam es egy t biztonsagi parameter. A kimenet True ha az m szamprımszam, figyelembe veve a t biztonsagi parametert, vagy False, ha a szam osszetett.

from random import randint

def miller_rabinT(m, t):

s, r = 0, m - 1

while r % 2 == 0:

s, r = s + 1, r // 2

for i in range (0, t):

x = randint(2, m - 1)

y = pow(x, r, m)

if y == 1 or y == (m - 1): continue

for j in range (1, s):

y = (y * y) % m

if y == 1: return False

if y == m - 1: break

if y != (m - 1): return False

return True

MARTON Gyongyver 2018, Diszkret matematika

Page 25: Diszkr et matematika 9. el}oad as - ms.sapientia.romgyongyi/DiszkretMat/9_Szamelmelet.pdf · Diszkr et matematika 9. el}oad as MARTON Gy ongyv er mgyongyi@ms.sapientia.ro Sapientia

A Miller-Rabin valoszınusegi prımteszt

Mi lesz az eredmenye a kovetkezo fuggvenyhıvasoknak?

>>> miller_rabinT(561, 20)

>>> miller_rabinT(1615681, 20)

>>> miller_rabinT(1909001, 20)

>>> miller_rabinT(2508013, 10)

>>> miller_rabinT(935794081, 20)

>>> miller_rabinT(2489462641, 20)

>>> miller_rabinT(12071477104822861216808586387918950333768935055030

80579133487559657569734020218239985458507248481664131696189240753969

6923442785951409526750132260151918419, 20)

>>> miller_rabinT(12071477104822861216808586387918950333768935055030

80579133487559657569734020218239985458507248481664131696189240753969

6923442785951409526750132260151918463, 20)

MARTON Gyongyver 2018, Diszkret matematika

Page 26: Diszkr et matematika 9. el}oad as - ms.sapientia.romgyongyi/DiszkretMat/9_Szamelmelet.pdf · Diszkr et matematika 9. el}oad as MARTON Gy ongyv er mgyongyi@ms.sapientia.ro Sapientia

A Miller-Rabin valoszınusegi prımteszt

5. feladat

A Miller-Rabin valoszınusegi prımteszt segıtsegevel generaljunk egy k bitesprımszamot, ahol k ≥ 128 bit.

import random

def primeGen(k, t):

nr = random.getrandbits(k)

if not (nr & 1): nr += 1

while True:

if miller_rabinT(nr, t): break

nr += 2

return nr

>>> primeGen(256, 20)

88725395404043359043589...111217400738357967924821159093157

MARTON Gyongyver 2018, Diszkret matematika

Page 27: Diszkr et matematika 9. el}oad as - ms.sapientia.romgyongyi/DiszkretMat/9_Szamelmelet.pdf · Diszkr et matematika 9. el}oad as MARTON Gy ongyv er mgyongyi@ms.sapientia.ro Sapientia

A Miller-Rabin valoszınusegi prımteszt

6. feladat

A Miller-Rabin valoszınusegi prımteszt segıtsegevel generalt szamot alakıtsuk 256-osszamrendszerbe, a kapott bajtszekvenciat pedig base64 formaban ırjuk ki egyallomanyba.

def primToB64(k, fname = ’primeB64.txt’):

nr = primeGen(k, 20)

m_str = nrToBytes(nr)

b64str = base64.b64encode(m_str)

out = open(fname, ’wt’)

out.write(b64str.decode())

out.close()

return nr

>>> primToB64(512)

>>> primToB64(1024, ’prime.txt’)

def nrToBytes(nr):

L = []

while nr != 0:

L = [nr & 255] + L

nr = nr >> 8

print(L)

return bytes(L)

MARTON Gyongyver 2018, Diszkret matematika

Page 28: Diszkr et matematika 9. el}oad as - ms.sapientia.romgyongyi/DiszkretMat/9_Szamelmelet.pdf · Diszkr et matematika 9. el}oad as MARTON Gy ongyv er mgyongyi@ms.sapientia.ro Sapientia

A Miller-Rabin valoszınusegi prımteszt

7. feladat

A fileba kiırt primszam base64-es alakjat olvassuk ki es alakıtsuk vissza szamma.

def primFromB64(fname = ’primeB64.txt’):

inf = open(fname, ’rt’)

m_str = inf.read()

inf.close()

b64str = base64.b64decode(m_str.encode())

nr = nrFrom256(b64str)

return nr

>>> primFromB64()

>>> primFromB64(’prime.txt’)

def nrFrom256(L):

nr = 0

for elem in L:

nr = (nr << 8) + elem

return nr

MARTON Gyongyver 2018, Diszkret matematika

Page 29: Diszkr et matematika 9. el}oad as - ms.sapientia.romgyongyi/DiszkretMat/9_Szamelmelet.pdf · Diszkr et matematika 9. el}oad as MARTON Gy ongyv er mgyongyi@ms.sapientia.ro Sapientia

Hatvanyok es generator elemek

a kis Fermat, illetve Euler tetel mellett, szamos egyeb tulajdonsagfigyelheto meg az xn (mod m) ertekek meghatarozasakor

Hatarozzuk meg xn (mod 11), ertekeit x = 2, 3, . . . 10-re illetven = 1, 2, . . . 10-re:

21 = 2 31 = 3 41 = 4 51 = 5 61 = 6 71 = 7 81 = 8 91 = 9 101 = 10

22 = 4 32 = 9 42 = 5 52 = 3 62 = 3 72 = 5 82 = 9 92 = 4 102 = 1

23 = 8 33 = 5 43 = 9 53 = 4 63 = 7 73 = 2 83 = 6 93 = 3 103 = 10

24 = 5 34 = 4 44 = 3 54 = 9 64 = 9 74 = 3 84 = 4 94 = 5 104 = 1

25 = 10 35 = 1 45 = 1 55 = 1 65 = 10 75 = 10 85 = 10 95 = 1 105 = 10

26 = 9 36 = 3 46 = 4 56 = 5 66 = 5 76 = 4 86 = 3 96 = 9 106 = 1

27 = 7 37 = 9 47 = 5 57 = 3 67 = 8 77 = 6 87 = 2 97 = 4 107 = 10

28 = 3 38 = 5 48 = 9 58 = 4 68 = 4 78 = 9 88 = 5 98 = 3 108 = 1

29 = 6 39 = 4 49 = 3 59 = 9 69 = 2 79 = 8 89 = 7 99 = 5 109 = 10

210 = 1 310 = 1 410 = 1 510 = 1 610 = 1 710 = 1 810 = 1 910 = 1 1010 = 1

MARTON Gyongyver 2018, Diszkret matematika

Page 30: Diszkr et matematika 9. el}oad as - ms.sapientia.romgyongyi/DiszkretMat/9_Szamelmelet.pdf · Diszkr et matematika 9. el}oad as MARTON Gy ongyv er mgyongyi@ms.sapientia.ro Sapientia

Hatvanyok es generator elemek

kis Fermat tetel, kimondja, hogy ha p prım es lnko(x , p) = 1, akkorxp−1 = 1 (mod p).

a fenti tablazat alapjan kijelenthetjuk, hogy lesznek olyan x szamok, aholx-nek kisebb hatvanyertekei is kongruensek lesznek 1-el.

x rend-jen, (mod p) szerint, azt a legkisebb k kitevot ertjuk, amelyrefennall: xk ≡ 1 (mod p). Pl. (mod 11) szerint a 2-es szam rendje 10, a3 szam rendje 5, mıg a 10-es szam rendje 2.

ha p egy prımszam, akkor mindig letezik gen ∈ {1, 2, . . . , p − 1},amelynek hatvanyertekei (mod p) szerint eloallıtjak az {1, 2, . . . , p − 1}halmaz elemeit egy tetszoleges sorrendbe.

ezeket a gen elemeket primitıv gyokoknek, vagy generatorelemeknek hıvjuk.ezek azok az elemek lesznek, amelyeknek rendje p − 1.a generator elemek szama: φ(p − 1).a fenti tablazatban 2, 6, 7, 8 generator elemek, szamuk φ(10) = 4.

MARTON Gyongyver 2018, Diszkret matematika