Kongruence Prvočísla oooooooo ooooooooooooo Diskrétní matematika - 2. týden Elementární teorie čísel - kongruence a prvočísla Jan Slovák Masarykova univerzita Fakulta informatiky jaro 2014 Kongruence oooooooo Prvočísla ooooooooooooo Ql Kongruence • Základní vlastnosti kongruencí O Prvočísla • Faktorizace • Poznámky • Dělitelé znovu Kongruence Prvočísla oooooooo ooooooooooooo • Jan Slovák, Martin Panák, Michal Bulant Matematika drsně a svižně, e-text na www.math.muni.cz/Matematika_drsne_svizne. • Michal Bulant, výukový text k přednášce Elementární teorie čísel, http://is.muni.cz/el/1431/podzim2012/M6520/ um/main-print.pdf • Jiří Herman, Radan Kučera, Jaromír Šimša, Metody řešení matematických úloh. MU Brno, 2001. • William Stein, Elementary Number Theory: Primes, Congruences, and Secrets, Springer, 2008. Dostupné na http://wstein.org/ent/ent.pdf • Radan Kučera, výukový text k přednášce Algoritmy teorie čísel, http://www.math.muni.cz/~kucera/texty/ATC10.pdf Kongruence •ooooooo Prvočísla ooooooooooooo Pojem kongruence byl zaveden Gaussem. Ačkoliv je to pojem velice jednoduchý, jeho důležitost a užitečnost v teorii čísel je nedocenitelná; projevuje se zejména ve stručných a přehledných zápisech některých i velmi komplikovaných úvah. Definice Jestliže dvě celá čísla a, b mají při dělení přirozeným číslem m týž zbytek r, kde 0 < r < m, nazývají se a, b kongruentnímodulo m (též kongruentní podle modulu m), což zapisujeme takto: a = b (mod m). V opačném případě řekneme, že a, b nejsou kongruentní modulo m, a píšeme a ^ b (mod m). Kongruence Prvočísla o»oooooo ooooooooooooo Lemma Pro libovolná a, b G Z, m G N jsou následující podmínky ekvivalentní: O a = b (mod m), O a = b + mt pro vhodné ŕ G Z, 0 m I a — b. Důkaz. " (1)=^(3)" Jestliže a = q\m + r, b = q2m + r, pak a - b = (q1- q2)m. " (3)=^(2)" Jestliže m | a — b, pak existuje ŕ G Z tak, že m • t = a — b, tj. a = b + mŕ. " (2)=^(1)" Jestliže a = b + mŕ, pak z vyjádření b = mq + r plyne a = m(g + t) + r, tedy a i fa mají při dělení číslem m týž zbytek r, tj. a = fa (mod m). □ Kongruence Prvočísla oo»ooooo ooooooooooooo Základní vlastnosti kongruencí Přímo z definice plyne, že kongruence podle modulu m je reflexivní (tj. a = a (mod m) platí pro každé a G Z), symetrická (tj. pro každé a,í)6Zz3EÍ) (mod m) plyne b = a (mod m)) a tranzitivní (tj. pro každé a, b, c G Z z a = fa (mod m) a b = c (mod m) plyne a = c (mod m)) relace, jde tedy o ekvivalenci. Dokážeme nyní další vlastnosti: • Kongruence podle téhož modulu můžeme sčítat. Libovolný sčítanec můžeme přenést s opačným znaménkem z jedné strany kongruence na druhou. K libovolné straně kongruence můžeme přičíst jakýkoliv násobek modulu. Kongruence Prvočísla o#oooo ooooooooooooo • Kongruence podle téhož modulu můžeme násobit. Obě strany kongruence je možné umocnit na totéž přirozené číslo. Obě strany kongruence je možné vynásobit stejným celým číslem. • Obě strany kongruence můžeme vydělit jejich společným dělitelem, jestliže je tento dělitel nesoudělný s modulem. • Obě strany kongruence i její modul můžeme současně vynásobit tímtéž přirozeným číslem. • Obě strany kongruence i její modul můžeme vydělit jejich společným kladným dělitelem. • Jestliže kongruence a = b platí podle modulů m\,..., m^, platí i podle modulu, kterým je nejmenší společný násobek [mj,..., m^] těchto čísel. • Jestliže kongruence platí podle modulu m, platí podle libovolného modulu d, který je dělitelem čísla m. 9 Jestliže je jedna strana kongruence a modul dělitelný nějakým celým číslem, musí být tímto číslem dělitelná i druhá strana. Kongruence 00*000 Prvočísla ooooooooooooo Poznámka Některé vlastnosti kongruencí jsme již používali, aniž bychom si toho povšimli - například příklad z minulého týdne lze přeformulovat do tvaru "jestliže a = 1 (mod m), b = 1 (mod m), pak také ab = 1 (mod m)", což je speciální případ zpředhozího tvrzení. Nejde o náhodu. Libovolné tvrzení používající kongruence můžeme snadno přepsat pomocí dělitelnosti. Užitečnost kongruencí tedy netkví v tom, že bychom pomocí nich mohli řešit úlohy, které bez nich řešit nejsme schopni, ale v tom, že jde o velmi vhodný způsob zápisu. Osvojíme-li si ho, výrazně tím zjednodušíme jak vyjadřování, tak i některé úvahy. Je to typický jev: v matematice hraje vhodná symbolika velmi závažnou úlohu. Kongruence ooo»oo Prvočísla ooooooooooooo Příklad Nalezněte zbytek po dělení čísla 520 číslem 26. Protože 52 = 25 = -1 (mod 26), platí 520 = (_i)io = 1 (mod 26), a tedy zbytek po dělení čísla 520 číslem 26 je jedna. Příklad Dokažte, že pro libovolné n G N je 37"+2 + 16"+1 + 23" dělitelné sedmi. Platí 37 = 16 = 23 = 2 (mod 7), a tedy podle základních vlastností platí 37n+2 + 16n+l+23n ^ 2n+2+2n+l+2n = 2"(4+2 + l) = 0 (mod 7). Príklad Dokažte, že číslo n = (8355 + 6)18 — 1 je dělitelné číslem 112. Řešení Rozložíme 112 = 7-16. Protože (7,16) = 1, stačí ukázat, že 7 | n a 16 | n. Platí 835 = 2 (mod 7), a tedy n = (25 + 6)18 - 1 = 3818 - 1 = 318 - 1 = = 276 - 1 = (-1)6 - 1 = 0 (mod 7), proto 7 | n. Podobně 835 = 3 (mod 16), a tedy n = (35 + 6)18 - 1 = (3 • 81 + 6)18 - 1 = (3 • 1 + 6)18 - 1 = = 918 — 1 = 819 — 1 = 19 — 1 = 0 (mod 16), proto 16 | n. Celkem tedy 112 | n, což jsme měli dokázat. Kongruence 0000000» Prvočísla ooooooooooooo ' Příklad Dokažte, že pro libovolné prvočíslo p a libovolná a, b G Z platí ap + bp = (a + b)p (mod p). Řešení Podle binomické věty platí (a + bf = ap+ {^aP-H + (p2)ap-2b2 + ■■■ + Dále, protože p (£) pro libovolné k £ {1,..., p platí (£) = 0 (mod p), odkud plyne tvrzení. - 1} [dokažte]), Kongruence oooooooo Prvočísla •oooooooooooo Prvočíslo je jeden z nejdůležitějších pojmů elementární teorie čísel. Jeho důležitost je dána především větou o jednoznačném rozkladu libovolného přirozeného čísla na součin prvočísel, která je silným a účinným nástrojem při řešení celé řady úloh z teorie čísel. Definice Každé přirozené číslo n > 2 má aspoň dva kladné dělitele: lan. Pokud kromě těchto dvou jiné kladné dělitele nemá, nazývá se prvočíslo. V opačném případě hovoříme o složeném čísle. V dalším textu budeme zpravidla prvočíslo značit písmenem p. Nejmenší prvočísla jsou 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, ... (zejména číslo 1 za prvočíslo ani za číslo složené nepovažujeme, je totiž invertibilní, neboli tzv. jednotkou okruhu celých čísel). Prvočísel je, jak brzy dokážeme, nekonečně mnoho, máme ovšem poměrně limitované výpočetní prostředky na zjištění, zda je dané číslo prvočíslem (největší známé prvočíslo 257885161 — 1 má pouze 17425170 cifer). Kongruence oooooooo Prvočísla 0*00000000000 Uveďme nyní větu, která udává ekvivalentní podmínku prvočíselnosti a je základní ingrediencí při důkazu jednoznačnosti rozkladu na prvočísla. Věta (Euklidova o prvočíslech) Přirozené číslo p > 2 je prvočíslo, právě když platí: pro každá celá čísla a, b z p | ab plyne p | a nebo p | b. Důkaz. "^"Předpokládejme, že p je prvočíslo a p | ab, kde a, b G Z. Protože (p, a) je kladný dělitel p, platí (p, a) = p nebo (p, a) = 1. V prvním případě p | a, ve druhém p | b, jak jsme dokázali minulý týden. " <í=" Jestliže p není prvočíslo, musí existovat jeho kladný dělitel různý od 1 a p. Označíme jej a; pak ovšem b = - G N a platí p = afa, odkud l 2 je možné vyjádřit jako součin prvočísel, přičemž je toto vyjádření jediné, nebereme-li v úvahu pořadí činitelů. (Je-li n prvočíslo, pak jde o „součin" jednoho prvočísla.) Poznámka Dělitelnost je možné obdobným způsobem definovat v libovolném oboru integrity (zkuste si rozmyslet, proč se omezujeme na obory integrity). V některých oborech integrity přitom žádné prvky s vlastností prvočísla (říkáme jim ireducibilní) neexistují (např. Q), v jiných sice ireducibilní prvky existují, ale zase tam neplatí věta o jednoznačném rozkladu (např. v Z (V—5) máme následující rozklady: 6 = 2 • 3 = (1 + v^5) • (1 - V^5)- Kongruence oooooooo Prvočísla ooo»ooooooooo Důkaz. Nejprve dokážeme indukcí, že každé n > 2 je možné vyjádřit jako součin prvočísel. Je-li n = 2, je n součin jediného prvočísla 2. Předpokládejme nyní, že n > 2 a že jsme již dokázali, že libovolné n', 2 < n' < n, je možné rozložit na součin prvočísel. Jestliže n je prvočíslo, je součinem jediného prvočísla. Jestliže n prvočíslo není, pak existuje jeho dělitel d, 1 < d < n. Označíme-li c = ^, platí také 1 < c < n. Z indukčního předpokladu plyne, že c i d je možné vyjádřit jako součin prvočísel, a proto je takto možné vyjádřit i jejich součin c • d = n. Nyní dokážeme jednoznačnost. Předpokládejme, že platí rovnost součinů pi • p2.....pm = qi ■ <72<7S, kde pi,... ,pm, <7i,..., qs jsou prvočísla a navíc platí pi < P2 < • • • < pm, <7i < <72 < • • • < <7s a 1 < m < s. Indukcí vzhledem k m dokážeme, že m = s, pi = gi,..., pm = qm. □ Kongruence oooooooo Prvočísla oooo»oooooooo Dokončení. Je-1i m = 1, je pi = qi.....qs prvočíslo. Kdyby s > 1, mělo by číslo pi dělitele q\ takového, že 1 < q\ < pi (neboť <72<73 • • • qs > 1), což není možné. Je tedy s = 1 a platí pi = q\. Předpokládejme, že m > 2 a že tvrzení platí pro m — 1. Protože Pi • P2Pm = qi ■ <72<7s, dělí pm součin qi.....qs, což je podle Euklidovy věty možné jen tehdy, jestliže pm dělí nějaké q-, pro vhodné / 6 {1, 2,..., s}. Protože q-, je prvočíslo, plyne odtud Pm = <7/ (neboť pm > 1). Zcela analogicky se dokáže, že qs = pj pro vhodné je {1,2,..., m}. Odtud plyne <7s = Pj < Pm = q; < qs, takže pm = qs. Vydělením dostaneme pi • P2.....Pm-i = qi • q2.....qs-i, a tedy z indukčního předpokladu m — 1 = s — 1, pi = qi,..., pm_i = qm-i- Celkem tedy m = s a pi = qi,..., pm-i = qm-i, Pm = qm-Jednoznačnost, a tedy i celá věta, je dokázána. □ Kongruence oooooooo Prvočísla ooooo»ooooooo Poznámka Již jsme se zmínili, že je složité o velkých číslech s jistotou rozhodnout, jde-li o prvočíslo (na druhou stranu je o naprosté většině složených čísel snadné prokázat, že jsou skutečně složená). Přesto se v roce 2002 podařilo indickým matematikům (Agrawal, Saxena, Kayal: http://www.cse.iitk.ac.in/users/manindra/ algebra/primality_v6.pdf) dokázat, že problém prvočíselnosti je možné rozhodnout algoritmem s časovou složitostí polynomiálně závislou na počtu cifer vstupního čísla. Nic podobného se zatím nepodařilo v otázce rozkladu čísla na prvočísla (třebaže se obecně nevěří, že je to možné, exaktní důkaz zatím nebyl podán). Kongruence oooooooo Prvočísla oooooo»oooooo Nic podobného se zatím nepodařilo v otázce rozkladu čísla na prvočísla (třebaže se obecně nevěří, že je to možné, exaktní důkaz zatím nebyl podán). Nej rychlejší obecně použitelný faktorizační algoritmus, tzv. síto v číselném tělese1, je sub-exponenciální časové složitosti 0(eL9(logA/)1/3(l°g'°8w)2/3). Poznámka Peter Shor v roce 1994 vymyslel algoritmus, který faktorizuje v kubickém čase (tj. 0((log A/)3)) na kvantovém počítači. Je k tomu nicméně třeba sestrojit počítače s dostatečným počtem qubits -jak je to obtížné, lze vysledovat z toho, ze v roce 2001 se IBM podařilo pomocí kvantového počítače rozložit číslo 15 a v roce 2012 byl dosažen další faktorizační rekord rozkladem čísla 21. 1Pro podrobnosti navštivte M8190 Algoritmy teorie čísel Kongruence oooooooo Prvočísla ooooooo»ooooo Poznámka Že je problém rozkladu přirozeného čísla na prvočísla výpočetně složitý, o tom svědčí i (již neplatná) výzva učiněná v roce 1991 firmou RSA Security (viz http://www.rsasecurity.com/rsalabs/node.asp?id=2093). Pokud se komukoliv podařilo rozložit čísla označená podle počtu cifer jako RSA-100, ..., RSA-704, RSA-768, .. ., RSA-2048, mohl obdržet 1000_____ 30 000, 50 000, ..., resp. 200 000 dolarů (číslo RSA-100 rozložil v temže roce Arjen Lenstra, číslo RSA-704 bylo rozloženo v roce 2012, některá dosud rozložena nebyla). Kongruence oooooooo Prvočísla oooooooo»oooo Díky jednoznačnosti rozkladu na prvočísla jsme schopni (se znalostí tohoto rozkladu) snadno odpovědět i na otázky ohledně počtu či součtu dělitelů konkrétního čísla. Stejně snadno dostaneme i (z dřívějška intuitivně známý) postup na výpočet největšího společného dělitele dvou čísel ze znalosti jejich rozkladu na prvočísla. Důsledek • Každý kladný dělitel čísla a = p"1.....p"kk je tvaru p™1.....p™k, kde mi,..., m/t 6 No a mi < ni, /7i2 < fl2, - - -, mk < nk. • Číslo a má tedy právě r(a) = (n\ + l)(fi2 + 1){nk + 1) kladných dělitelů, jejichž součet je Pl - 1 pk - 1 Kongruence oooooooo Prvočísla ooooooooo^ooo Důsledek (Pokr.) • Jsou-li pi, . . . , pk navzájem různá prvočísla a n\, nk, m-í, ..., mk G N0 a označíme-li r, = min{n/, m,-}, t; = max{nf-, m i} pro každé / = 1, 2,..., k, platí (Pľ .....PľSPľ1 ••••pD p?-- ■ti, [pT ••••pľspľ1 ••••Pľ1=PÍ1---- Kongruence oooooooo Prvočísla oooooooooo»oo S pojmem součet všech kladných dělitelů čísla a souvisí pojem tzv. dokonalého čísla a, které splňuje podmínku u(a) = 2a, resp. slovně: součet všech kladných dělitelů čísla a menších než a samotné je roven číslu a. Takovými čísly jsou např. 6 = 1 + 2 + 3, 28 = 1 + 2 + 4 + 7 +14, 496 a 8128 (jde o všechna dokonalá čísla menší než 10 000). Poznámka Lze ukázat, že sudá dokonalá čísla jsou v úzkém vztahu s tzv. Mersenneho prvočísly. Platí totiž: a je sudé dokonalé číslo, právě když je tvaru a = 2q_1 • (2q - 1), kde 2q - 1 je prvočíslo. Mersenneho prvočísla jsou právě prvočísla tvaru 2k — 1. Bez zajímavosti není ani to, že právě Mersenneho prvočísla jsou mezi všemi prvočísly nejlépe „vidět" - pro Mersenneho čísla existuje poměrně jednoduchý a rychlý postup, jak ověřit, že jde o prvočísla. Kongruence oooooooo Prvočísla oooooooooooso Proto není náhodou, že největší známá prvočísla jsou obvykle tvaru 2k — 1 (viz např. http://www.utm.edu/research/primes/largest.html). Jakkoliv může být hledání největšího známého prvočísla chápáno jako pochybná zábava bez valného praktického užitku2, jednak posunuje hranice matematického poznania zdokonaluje použité metody (a často i hardware), jednak může přinést benefit i samotným objevitelům (Electronic Frontier Foundation vypsala odměny EFF Cooperative Computing Awards za nalezení prvočísla majícího alespoň 106,107,108 a 109 číslic - odměny 50, resp. 100 tisíc $ za první dvě kategorie byly vyplaceny v letech 2000, resp. 2009 - v obou případech projektu GIMPS - na další odměny si ještě zřejmě nějaký čas počkáme). Na druhou stranu popsat lichá dokonalá čísla se dodnes nepodařilo, resp. dodnes se neví, jestli vůbec nějaké liché dnknnalé řísln existuje_ 2Viz např. titulek iDnes z 6.února 2013: Největší známé prvočíslo na světě Kongruence oooooooo Prvočísla 000000000000» Přestože zatím nemáme jasno v tom, jak efektivně implementovat použité operace, ani neumíme dokázat jeho správnost, uveďme si pro ilustraci test, kterým lze zjistit, je-li dané Mersenneho číslo prvočíslem. Lucas-Lehmerův test Definujme posloupnost (sn)^L0 rekurzívně předpisem So = 4, sn+i = s„ — 2. Pak je číslo Mp = 2P — 1 prvočíslo, právě tehdy, když Mp dělí sp_2-