2016, Diszkrét matematika

Hasonló dokumentumok
2017, Diszkrét matematika

2018, Diszkre t matematika. 10. elo ada s

2016, Diszkrét matematika

1. Egészítsük ki az alábbi Python függvényt úgy, hogy a függvény meghatározza, egy listába, az első n szám faktoriális értékét:

2018, Diszkre t matematika. 8. elo ada s

2018, Diszkrét matematika

2016, Diszkrét matematika

Sapientia Egyetem, Matematika-Informatika Tanszék.

Sapientia Egyetem, Matematika-Informatika Tanszék.

Számelmélet (2017. február 8.) Bogya Norbert, Kátai-Urbán Kamilla

Nagy Gábor compalg.inf.elte.hu/ nagy

Sapientia Egyetem, Műszaki és Humántudományok Tanszék.

2018, Diszkrét matematika

Diszkrét matematika I.

Nagy Gábor compalg.inf.elte.hu/ nagy ősz

Számelmélet. 1. Oszthatóság Prímszámok

2016, Diszkrét matematika

2015, Diszkrét matematika

Sapientia Egyetem, Műszaki és Humántudományok Tanszék.

2018, Diszkrét matematika

Minden egész szám osztója önmagának, azaz a a minden egész a-ra.

Sapientia Egyetem, Műszaki és Humántudományok Tanszék.

Kongruenciák. Waldhauser Tamás

RSA algoritmus. P(M) = M e mod n. S(C) = C d mod n. A helyesség igazoláshoz szükséges számelméleti háttér. a φ(n) = 1 mod n, a (a 1,a 2,...

illetve a n 3 illetve a 2n 5

Nagy Gábor compalg.inf.elte.hu/ nagy ősz

Sapientia Egyetem, Műszaki és Humántudományok Tanszék.

Bevezetés az algebrába az egész számok 2

Sapientia Egyetem, Műszaki és Humántudományok Tanszék.

Hatványozás. A hatványozás azonosságai

2016, Diszkrét matematika

Diszkrét matematika I.

2015, Diszkrét matematika

7. Számelmélet. 1. Lehet-e négyzetszám az a pozitív egész szám, amelynek tízes számrendszerbeli alakjában 510 darab 1-es és valahány 0 szerepel?

1.1. Definíció. Azt mondjuk, hogy a oszója b-nek, vagy más szóval, b osztható a-val, ha létezik olyan x Z, hogy b = ax. Ennek jelölése a b.

2019, Funkcionális programozás. 2. el adás. MÁRTON Gyöngyvér

Nagy Gábor compalg.inf.elte.hu/ nagy ősz

2018, Diszkrét matematika

Nagy Gábor compalg.inf.elte.hu/ nagy ősz

Diszkrét matematika 1. estis képzés. Komputeralgebra Tanszék ősz

2018, Funkcionális programozás

Nagy Gábor compalg.inf.elte.hu/ nagy ősz

2018, Diszkrét matematika

Oszthatóság. Oszthatóság definíciója (az egészek illetve a természetes számok halmazán):

Diszkrét matematika I.

Klasszikus algebra előadás. Waldhauser Tamás április 28.

Differenciálegyenletek megoldása Laplace-transzformációval. Vajda István március 21.

Diszkrét matematika II. gyakorlat

SzA XIII. gyakorlat, december. 3/5.

2. Feladatsor. N k = {(a 1,...,a k ) : a 1,...,a k N}

Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma) Számelmélet I.

Diszkrét matematika 2.

Matematika 7. osztály

Szakács Lili Kata megoldása

Bevezetés az algebrába 1

Számelmélet. 4. Igazolja, hogy ha hat egész szám összege páratlan, akkor e számok szorzata páros!

Polinomok (el adásvázlat, április 15.) Maróti Miklós

RSA algoritmus. Smidla József. Rendszer- és Számítástudományi Tanszék Pannon Egyetem

Algoritmuselmélet gyakorlat (MMN111G)

Diszkrét matematika 2. estis képzés

2016, Funkcionális programozás

Bevezetés az algebrába 1

2019, Diszkrét matematika. 1. el adás

Polinomok (előadásvázlat, október 21.) Maróti Miklós

2018, Funkcionális programozás

Nagy Gábor compalg.inf.elte.hu/ nagy

Algebra es sz amelm elet 3 el oad as Nevezetes sz amelm eleti probl em ak Waldhauser Tam as 2014 oszi f el ev

SZÁMELMÉLETI FELADATOK

Bevezetés az algebrába az egész számok

Számelmélet Megoldások

Algoritmuselmélet 18. előadás

2018, Funkcionális programozás

Más szavakkal formálisan:, ahol olyan egész szám, hogy. Más szavakkal formálisan:, ahol olyan egész szám, hogy.

Pótvizsga matematika 7. osztály (Iskola honlapján is megtalálható!) Tételek

2. Tétel (Az oszthatóság tulajdonságai). : 2. Nullát minden elem osztja, de. 3. a nulla csak a nullának osztója.

Waldhauser Tamás december 1.

Sapientia Egyetem, Matematika-Informatika Tanszék.

3. Lineáris differenciálegyenletek

Funkcionális és logikai programozás. { Márton Gyöngyvér, 2012} { Sapientia, Erdélyi Magyar Tudományegyetem }

Számelméleti alapfogalmak

Felvételi vizsga mintatételsor Informatika írásbeli vizsga

Prímtesztelés, Nyilvános kulcsú titkosítás

Nagy Gábor compalg.inf.elte.hu/ nagy ősz

2016/2017. Matematika 9.Kny

Készítette: Fuszenecker Róbert Konzulens: Dr. Tuzson Tibor, docens

Nagy Gábor compalg.inf.elte.hu/ nagy

Nagy Gábor compalg.inf.elte.hu/ nagy ősz

Emlékeztet! matematikából

megtalálásának hihetetlen nehéz voltán alapszik. Az eljárás matematikai alapja a kis FERMAT-tétel egy következménye:

Nagy Gábor compalg.inf.elte.hu/ nagy

Racionális számok: Azok a számok, amelyek felírhatók két egész szám hányadosaként ( p q

2016/2017. Matematika 9.Kny

Gyakorló feladatok 9.évf. halmaznak, írd fel az öt elemű részhalmazokat!. Add meg a következő halmazokat és ábrázold Venn-diagrammal:

Megyei matematikaverseny évfolyam 2. forduló

Bevezetés a matematikába (2009. ősz) 1. röpdolgozat

Matematika pótvizsga témakörök 9. V

Gyakorló feladatok Gyakorló feladatok

OSZTHATÓSÁG. Osztók és többszörösök : a 3 többszörösei : a 4 többszörösei Ahol mindkét jel megtalálható a 12 többszöröseit találjuk.

I. ALAPALGORITMUSOK. I. Pszeudokódban beolvas n prim igaz minden i 2,gyök(n) végezd el ha n % i = 0 akkor prim hamis

MATEMATIKA ÉRETTSÉGI TÍPUSFELADATOK MEGOLDÁSAI KÖZÉP SZINT Számelmélet

Átírás:

Diszkrét matematika 11. előadás Sapientia Egyetem, Műszaki és Humántudományok Tanszék Marosvásárhely, Románia mgyongyi@ms.sapientia.ro 2016, őszi félév

Miről volt szó az elmúlt előadáson? legnagyobb közös osztó az eukleidészi algoritmus és változatai lineáris kongruenciák moduláris inverz az RSA titkosító, baby változat

Miről lesz szó? megjegyzések az előző előadáshoz: inverz függvény, videó, animáció megjegyzések a 6. labor 4-es feladatához az RSA szöveg, bájtsorozat titkosítása, baby változat legkisebb közös többszörös diofantoszi egyenletek a kínai maradéktétel

Az RSA, számpélda Kulcsgenerálás Legyen p = 61, q = 97 két prímszám. Meghatározzuk: n = 61 97 = 5917, φ = (p 1) (q 1) = 60 96 = 5760. Legyen e = 7, ahol lnko(7, φ) = 1. Meghatározzuk e inverzét (mod φ) szerint, kapjuk: d = 823, mert 7 823 = 1 (mod 5760). A nyilvános-kulcs : (7, 5917). A titkos-kulcs : (823, 5917). Titkosítás (bárki titkosíthat) Az x = 2014 értéket szeretnék titkosítani, ekkor a titkosított érték: cx = 2014 7 1526 (mod 5917). Visszafejtés (csak a titkos-kulcs birtokosa tud visszafejteni) x = 1526 823 2014 (mod 5917).

Az RSA, bájtsorozat titkosítása bájtsorozat: [0,255] közötti értékből álló sorozat, azaz 256-os számrendszerbeli számjegyeket tartalmazó sorozat, ezt fogjuk titkosítani az RSA algoritmus egy nagy számot titkosít: a bájtsorozatot át kell alakítani nagy számmá, azaz a 256-os számrendszerbeli számjegyeket át kell alakítani 256 l számrenszerbe, ahol l a bájtsorozat hossza az alakit, függvény, a bemeneti l hosszúságú stringet átalakítja egész számmá, (256-os számrendszerből alakít 256 l számrendszerbe), a string elemeire alkalmazzuk a ord() könyvtárfüggvényt, az valakit, függvény, egy egész számot átalakít egy l hosszúságú stringgé, (256 l -es számrendszerből alakít 256-os számrendszerbe), alkalmazzuk a chr() könyvtárfüggvényt.

Az RSA, szöveg-rejtjelező def alakit(szoveg, l): szam = 0 pr = 1 for i in range(l): temp = ord(szoveg[i]) szam += temp * pr pr = pr << 8 return szam def valakit(szam, l): szoveg = for i in range(l): temp = szam & 255 szoveg += chr(temp) szam = szam >> 8 return szoveg

Az RSA, szöveg-rejtjelező A feladat konstans kulcsokkal dolgozik, a kulcsgenerálás az előző előadáson volt tárgyalva. A függvény paramétere az a karakterlánc amit titkosítani szeretnénk. from random import randint import base64 def RSA_main (szoveg): k = 256 e = 3 p = 148569510378747575788228425143133393923 q = 118544365557834428591364998965090431971 n = p * q phi = (p-1) * (q-1) d = inverz(e, phi) l = len(szoveg) if l > k/8: print "nagyobb kulcs meret kell!" return print "encryption..." cszoveg = RSA_cryptS(e, n, l, k/8, szoveg) print "encrypted text: ", cszoveg print "encrypted text in base64: ",, base64.b64encode(cszoveg) print print "decryption..." nszoveg = RSA_decryptS(d, n, l, k/8, cszoveg) print "decrypted text: ", nszoveg

Az RSA, szöveg-rejtjelező def RSA_cryptS(e, n, l1, l2, szoveg): x = alakit (szoveg, l1) cx = pow (x, e, n) cszoveg = valakit (cx, l2) return cszoveg def RSA_decryptS(d, n, l1, l2, cszoveg): cx = alakit (cszoveg, l2) nx = pow(cx, d, n) nszoveg = valakit (nx, l1) return nszoveg

A legkisebb közös többszörös Az a és b egész számok legkisebb közös többszöröse, az a legkisebb szám amely osztható a-val és b-vel is. Jelölése: lkkt(a, b), vagy [a, b]. Kapcsolat a legnagyobb közös osztóval: (a, b) [a, b] = a b. Ha a = p a i i Ha a = p a i i Megjegyzések: és b = p b i i, akkor lnko(a, b) = p min{a i,b i } i. és b = p b i i, akkor lkkt(a, b) = p max{a i,b i } i. két szám prímtényezős felbontása alapján meghatározható, tehát a két szám legnagyobb közös osztója, legkisebb közös többszöröse nagy számok esetében, a prímtényezős felbontás meghatározására nem ismert hatékony eljárás, ekkor az eukleidészi algoritmust kell használni

Diofantoszi egyenletek 1. tétel egész együtthatós többismeretlenes algebrai egyenletek, amelyeknek megoldásai egész számok (ritkán természetes vagy racionális számok), elnevezése Diophantosz (3. század), görög matematikus után, csak elsőfokú kétismeretlenes diofantoszi egyenletekkel fogunk foglalkozni: a x + b y = c, Legyenek a, b egész számok, úgy hogy d = lnko(a, b). Az a x + b y = c egyenletnek nincs megoldása az egész számok körében, ha d nem osztja c-t. Ha d c, akkor az egyenletnek végtelen sok megoldása van: x = x 0 + (b/d) n, y = y 0 (a/d) n, ahol n egész szám és x 0, y 0 az egyenlet egy partikuláris megoldása.

Diofantoszi egyenletek, példa Egy elárusító 1676 ron értékben rendelt almát és körtét. Minden láda alma 36 ronba, és minden láda körte 50 ronba kerül. Hány láda almát és hány láda körtét rendelt? 1. megoldás: 16 láda almát és 22 láda körtét rendelt, 16 36 + 22 50 = 1676. 2. megoldás: 41 láda almát és 4 láda körtét rendelt, 41 36 + 4 50 = 1676. A megoldás menete: Meghatározzuk 36, 50 legnagyobb közös osztóját: d = 2. Megvizsgáljuk, hogy d = 2 osztja-e 1676-ot. A kiterjesztett eukleidészi algoritmussal meghatározzuk: x = 7, y = 5 értékeket: 7 36 + ( 5) 50 = 2. Megszorozzuk az egyenletet 1676 = 838 -cal. d Egy partikuláris megoldás x 0 = 5866, y 0 = 4190: 5866 36 4190 50 = 1676 a feladat megoldásához a pozitív megoldások kellenek

Diofantoszi egyenletek Keressük a pozitív megoldásokat, fenn kell álljon: 5866 + 50 d 4190 + 36 d n = 5866 + 25 n 0 n 234.64 n = 4190 18 n 0 n 232.7 n = 234 x 1 = 5866 + 25 ( 234) = 16 y 1 = 4190 18 ( 234) = 22 n = 233 x 2 = 5866 + 25 ( 233) = 41 y 2 = 4190 18 ( 233) = 4

Diofantoszi egyenletek, példa Egy elárusító 549 ron értékben rendelt almát és körtét. Minden láda alma 18 ronba, és minden láda körte 33 ronba kerül. Mennyi az a minimális ládaszám amit az elárusító rendelhetett? Megoldások: 25 láda alma és 3 láda körte, összesen 28 láda 14 láda alma és 9 láda körte, összesen 23 láda 3 láda alma és 15 láda körte, összesen 18 láda Az elárusító 18 láda gyümölcsöt rendelt.

Diofantoszi egyenletek A megoldás menete: Meghatározzuk 18 és 33 legnagyobb közös osztóját: d = 3. Megvizsgáljuk, hogy d = 3 osztja-e 549-et. A kiterjesztett eukleidészi algoritmussal meghatározzuk: x = 2, y = 1 értékeket: 2 18 + ( 1) 33 = 3. Megszorozzuk az egyenletet 549 = 183 - mal. d Egy partikuláris megoldás x 0 = 366, y 0 = 183. Keressük a pozitív megoldásokat, fenn kell álljon: 366 + 33 d 183 18 d n = 366 + 11 n 0 n 33.2 n = 183 6 n 0 n 30.5

Diofantoszi egyenletek n = 33 x 1 = 366 + 11 ( 33) = 3 y 1 = 183 6 ( 33) = 15 n = 32 x 2 = 366 + 11 ( 32) = 14 y 2 = 183 6 ( 32) = 9 n = 31 x 3 = 366 + 11 ( 31) = 25 y 3 = 183 6 ( 31) = 3 A minimumot az x 1 = 3, y 1 = 15 megoldás adja, ami összesen 18 ládát jelent.

Egy kétismeretlenes diofantikus egyenlet pozitív megoldásai from math import ceil, floor def diofant (a, b, c): (d, x, y) = exteuclid (a, b) if c % d <> 0: print "no solution" return x *= c/d y *= c/d bd = b/d ad = a/d n1 = int (ceil(-x / float(bd))) n2 = int (floor(y / float(ad))) for i in range(n1, n2 + 1): print x + bd * i, y - ad * i

A kínai maradéktétel Feladat: Ha egy tojásokkal teli kosárból kivesszük a tojásokat 2, 3, 4, 5, majd 6 -osával, akkor rendre 1, 2, 3, 4, 5 tojás marad mindig a kosárban. Ha 7-esével vesszük ki nem marad egy tojás sem. Hány tojás van a kosárban? A feladat az alábbi kongruencia rendszerrel modellezhető: Mi a fenti rendszer megoldása? x 1 (mod 2) x 2 (mod 3) x 3 (mod 4) x 4 (mod 5) x 5 (mod 6) x 0 (mod 7)

A kínai maradéktétel 2. tétel Legyenek m 1, m 2,..., m r pozitív, páronként relatív prímek. Ekkor az x a 1 (mod m 1) x a 2 (mod m 2). x a r (mod m r ) kongruencia rendszernek M = m 1 m 2... m r modulus szerint egy megoldása van. A megoldás meghatározásának menete: meghatározzuk: M k = M/m k = m 1 m 2... m k 1 m k+1... m r, meghatározzuk az M k értékek inverzét ˆM k -val, (mod m k ) szerint, jelöljük ezeket x = a 1 M 1 ˆM 1 + a 2 M 2 ˆM 2 +... + a r M r ˆM r lesz a rendszer megoldása.

A kínai maradéktétel A tojásos feladat az alábbi kongruencia rendszerre vezethető vissza: mert x 4 (mod 5) x 11 (mod 12) x 0 (mod 7) az x 3 (mod 4) egyenlet megoldásai kielégítik az x 1 (mod 2) egyenlet megoldásait, az x 5 (mod 6) egyenlet megoldásai kielégítik az x 2 (mod 3) egyenlet megoldásait, az x 11 (mod 12) egyenlet megoldásai kielégítik az x 3 (mod 4) és x 5 (mod 6) egyenletek megoldásait.

A kínai maradéktétel A megoldás menete: a 1 = 4, a 2 = 11, a 3 = 0, m 1 = 5, m 2 = 12, m 3 = 7, M = 420, M 1 = 84, M 2 = 35, M 3 = 60, ˆM 1 = 4, ˆM 2 = 11, ˆM 3 = 2, vegyük észre, hogy fennáll: M 1 ˆM1 = 1 (mod m 1) M 2 ˆM2 = 1 (mod m 2) M 3 ˆM3 = 1 (mod m 3) 84 4 = 1 (mod 5) 35 11 = 1 (mod 12) 60 2 = 1 (mod 7) x = 84 4 4 + 11 11 35 + 5 60 0 = 119 (mod 420).