Kongruence oooooo Prvočísla ooooooooooooo Diskrétní matematika - 2. týden Elementární teorie čísel - kongruence a prvočísla Jan Slovák Masarykova univerzita Fakulta informatiky jaro 2019 <□► < rS1 ► <■€.*■ < ► -e o q, o Kongruence oooooo Obsah přednášky Prvočísla ooooooooooooo Q Kongruence o Základní vlastnosti kongruencí Q Prvočísla • Faktorizace • Poznámky • Dělitelé znovu Kongruence oooooo Doporučené zdroje Prvočísla ooooooooooooo • Jan Slovák, Martin Panák, Michal Bulant Matematika drsně a svižně, e-text na www.math.muni.cz/Matematika_drsne_svizne. Kongruence Prvočísla oooooo ooooooooooooo Doporučené zdroje • 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. o William Stein, Elementary Number Theory: Primes, Congruences, and Secrets, Springer, 2008. Dostupné na http://wstein.org/ent/ent.pdf o Radan Kučera, výukový text k přednášce Algoritmy teorie čísel, http://www.math.muni.cz/~kucera/texty/ATC10.pdf Kongruence oooooo Plán prednášky Prvočísla ooooooooooooo Q Kongruence o Základní vlastnosti kongruencí • Faktorizace • Poznámky 9 Dělitelé znovu Kongruence •ooooo 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. Kongruence •ooooo 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 o0oooo Prvočísla ooooooooooooo r Lemma i Pro libovolná a, b 0 q,o Kongruence oooooo Plán prednášky Prvočísla ooooooooooooo f \ o" y 11 ^ n ť~* & O • Základní vlastnosti kongruencí Q Prvočísla • Faktorizace • Poznámky • Dělitelé znovu Kongruence oooooo 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: 1 a n. 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. Kongruence oooooo 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 17 425170 cifer). Kongruence oooooo Prvočísla o«ooooooooooo 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 I a nebo p b. Kongruence oooooo Prvočísla o«ooooooooooo 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 I a nebo p b. Důkaz. "Předpokládejme, že p je prvočíslo a p | ab, kde a, b £ 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. Kongruence oooooo Prvočísla o«ooooooooooo 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 I a nebo p b. Důkaz. Předpokládejme, že p je prvočíslo a p \ ab, kde a, b £ 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 = - £ N a platí p = ab, 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čin11 jednoho prvočísla.) Kongruence Prvočísla oooooo oo0oooooooooo Základní věta aritmetiky Libovolné přirozené číslo n > 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čin11 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 - ^b). Kongruence oooooo Prvočísla ooo0ooooooooo 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é nf, 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. Kongruence oooooo Prvočísla ooo0ooooooooo 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é nf, 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 • Q2qs, kde pi,..., pm, <7i,..., qs jsou prvočísla a navíc platí pi < p2 < • • • < pm, 9i < 92 < • • • < 9s 3 1 < m < s. Indukcí vzhledem k m dokážeme, že m = s, pi = qri,..., pm = c/m. □ Kongruence oooooo Prvočísla oooo0oooooooo Dokončení. Je-li m = 1, je pi = q\.....qs prvočíslo. Kdyby s > 1, mělo by číslo pi dělitele q\ takového, že 1 < q\ < pi (neboť Q2Q3 ... qfs > 1), což není možné. Je tedy s = 1 a platí pi = q\. Kongruence oooooo Prvočísla oooo0oooooooo Dokončení. Je-li m = 1, je pi = q\.....qs prvočíslo. Kdyby s > 1, mělo by číslo pi dělitele q\ takového, že 1 < q\ < pi (neboť Q2Q3 ... 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 = qri • 92<7s. dělí pm součin qľ.....qs, což je podle Euklidovy věty možné jen tehdy, jestliže pm dělí nějaké q; pro vhodné / e {1, 2,..., s}. Protože q\ je prvočíslo, plyne odtud Pm — Qi (neboť pm > 1). Zcela analogicky se dokáže, že qs — pj pro vhodné j e {1,2,..., m}. Odtud plyne qs = P/ < Pm = qr/ < 9s, takže pm = qs- Vydělením dostaneme pi • P2.....Pm-i = Qi ' Q2Qs-i, 3 tedy z indukčního předpokladu m — 1 = s — 1, pi = qi,..., pm_i = qm-i- Celkem tedy at? = s a pi = c/i..... pm_i = pm = qm. Jednoznačnost, a tedy i celá věta, je dokázána. □ Kongruence oooooo PRIMES is in P Prvočísla ooooo0ooooooo Poznámka Již jsme se zmínili, že je složité o velkých číslech s jistotou rozhodnout, jde-1i 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/manind.ra/ 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 Prvočísla oooooo oooooo0oooooo Is FACTOR in P? Nie podobného se zatím nepodarilo 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). Nejrychlejší obecně použitelný faktorizační algoritmus, tzv. síto v číselném tělese1, je sub-exponenciální časové složitosti Oíe1-9^^173^1^^273). Pro podrobnosti navštivte M8190 Algoritmy teorie čísel g Kongruence Prvočísla oooooo oooooo0oooooo Is FACTOR in P? 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). Nejrychlejší obecně použitelný faktorizační algoritmus, tzv. síto v číselném tělese1, je sub-exponenciální časové složitosti Oíe1-9^^173^1^^273). 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. Pro podrobnosti navštivte M8190 Algoritmy teorie čísel g Kongruence oooooo RSA Challenge 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 oooooo Prvočísla oooooooo0oooo 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 — p11.....pkk je tvaru p™1.....p™k, kde mi,..., mk £ No a mi < n\, rr?2 < r?2, mk < nk. -/ Kongruence oooooo Prvočísla oooooooo0oooo 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 — p11.....pkk je tvaru p™1.....p™k, kde mi,..., mk £ No a m\ < n\, rr?2 < r?2, mk < nk. 9 Číslo a má tedy právě r(a) = (r?i + l)(r?2 + 1)(nk + 1) kladných dělitelů, jejichž součet je pi+1 -1 plk+l-1 cr(a) = —-. . . —--. Kongruence oooooo Prvočísla ooooooooo0ooo Důsledek (Pokr.) Jsou-li pi,..., p k navzájem různá prvočísla a r?i, ..., m^ G No a označíme-li r\ — min{r?;, m,}, ti = max{r?;, rn/} pro každé i = 1, 2,..., k, platí , nk, mlr (pí ni [pí "i pD = pí1 p/c Kongruence Prvočísla oooooo oooooooooo0oo Mersenneho prvočísla a dokonalá čísla S pojmem součet všech kladných dělitelů čísla a souvisí pojem tzv. dokonalého čísla a, které splňuje podmínku a(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). Kongruence Prvočísla oooooo oooooooooo0oo Mersenneho prvočísla a dokonalá čísla S pojmem součet všech kladných dělitelů čísla a souvisí pojem tzv. dokonalého čísla a, které splňuje podmínku a(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~ľ • (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 Prvočísla oooooo ooooooooooo«o Hledání velkých prvočísel 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). 2Viz např. titulek iDnes z 6.února 2013: Největší známé prvočíslo na světšt Kongruence Prvočísla oooooo ooooooooooo«o Hledání velkých prvočísel 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é dokonalé číslo existuje_ 2Viz např. titulek iDnes z 6.února 2013: Největší známé prvočíslo na^světět Kongruence Prvočísla oooooo ooooooooooooí Jak testovat Mersenneho prvočísla? 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. Kongruence Prvočísla oooooo ooooooooooooí Jak testovat Mersenneho prvočísla? 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)^0 rekurzívně předpisem so — 4, sn+i = — 2. Pak je číslo Mp = 2P — 1 prvočíslo, právě tehdy, když Mp dělí sp_2.