Proč je dobré míti...... prvočísla? Michal Bulant Brkomoni 2016, Zdobnice v Orlických horách 29.8. - 4.9.2016 Michal Bulant (Brkos 2016) Motivace Plán přednášky O Mot ivace o Co je to vlastně prvočíslo? o Eulerova funkce cp o Fermatova a Eulerova věta ■v o Čínská zbytková věta 9 Teoretické základy o Klasické testy s využitím kongruencí Michal Bulant (Brkos 2016) Proč je dobré mít i prvočísla 29.8. - 4.9.2016 2 / 52 Motivace Zašifrovaná motivace Zachytili jsme tajnou zprávu C = 239675027941280548756812205343466895417790207923642 pro našeho nepřítele A, kterou bychom rádi dešifrovali. Michal Bulant (Brkos 2016) Proč je dobré míti prvočísla 4 š ► < i ► -š ^O^O 29.8. - 4.9.2016 3 / 52 Motivace Zašifrovaná motivace wgm Zachytili jsme tajnou zprávu C = 239675027941280548756812205343466895417790207923642 pro našeho nepřítele A, kterou bychom rádi dešifrovali. Jako každý jiný účastník víme, že A komunikuje prostřednictvím RSA a že veřejný klíč Va je tvořen čísly n = 374144419156711146897884040346152783797331507019777 a e = 240911337096020749615795248242245864391942105373709. Michal Bulant (Brkos 2016) Proč je dobré míti prvočísla 29.8. - 4.9.2016 3 / 52 Motivace Zašifrovaná motivace Zachytili jsme tajnou zprávu C = 239675027941280548756812205343466895417790207923642 pro našeho nepřítele A, kterou bychom rádi dešifrovali. Jako každý jiný účastník víme, že A komunikuje prostřednictvím RSA a že veřejný klíč Va je tvořen čísly n = 374144419156711146897884040346152783797331507019777 e = 240911337096020749615795248242245864391942105373709. Jsme schopni s těmito údaji zprávu dešifrovat? Michal Bulant (Brkos 2016) Proč je dobré míti prvočísla 29.8. - 4.9.2016 3 / 52 Motivace Zašifrovaná motivace - RSA Ron Rivest, Adi Shamir, Leonard Adleman (1977; C. Cocks,GCHQ - 1973) 9 každý účastník A potřebuje dvojici klíčů - veřejný V a a soukromý Sa Michal Bulant (Brkos 2016) Motivace Zašifrovaná motivace - RSA Ron Rivest, Adi Shamir, Leonard Adleman (1977; C. Cocks,GCHQ - 1973) 9 každý účastník A potřebuje dvojici klíčů - veřejný V a a soukromý S a o generování klíčů: zvolí dvě velká prvočísla p, q, vypočte n = pq, (p(n) = (p — l)(q — 1) [n je veřejné, ale (p(n) nelze snadno spočítat ] Michal Bulant (Brkos 2016) Motivace Zašifrovaná motivace - RSA Ron Rivest, Adi Shamir, Leonard Adleman (1977; C. Cocks,GCHQ - 1973) 9 každý účastník A potřebuje dvojici klíčů - veřejný V a a soukromý S a o generování klíčů: zvolí dvě velká prvočísla p, q, vypočte n = pq, (p(n) = (p — l)(q — 1) [n je veřejné, ale (p(n) nelze snadno spočítat ] o zvolí veřejný klíč e a ověří, že (e,
(r?)) a zašifrování numerického kódu zprávy M: C = Ce{M) = Me (mod n) o dešifrování šifry C: 07" = Dd(C) = Cd (mod n) Michal Bulant (Brkos 2016) Proč je dobré mít i prvočísla 29.8. - 4.9.2016 4 / 52 Něco málo o prvočíslech Plán přednášky Q Něco málo o prvočíslech o Co je to vlastně prvočíslo? e Eulerova funkce cp o Fermatova a Eulerova věta ■v o Čínská zbytková věta 9 Teoretické základy o Klasické testy s využitím kongruencí Michal Bulant (Brkos 2016) Proč je dobré míti prvočísla 29.8. - 4.9.2016 5 / 52 Něco málo o prvočíslech Co je to vlastně prvočíslo? Prvočíslo Definice Přirozené číslo, které má právě 2 kladné dělitele, se nazývá prvočíslo Michal Bulant (Brkos 2016) Proč je dobré míti prvočísla 29.8. - 4.9.2016 6 / 52 Něco málo o prvočíslech Co je to vlastně prvočíslo? Prvočíslo Definice Přirozené číslo, které má právě 2 kladné dělitele, se nazývá prvočíslo Definice (alternativní) Přirozené číslo n je prvočíslo, právě když pro libovolná a, b G Z platí n ab => n a nebo n b. Michal Bulant (Brkos 2016) Proč je dobré míti prvočísla 29.8. - 4.9.2016 6 / 52 Něco málo o prvočíslech Co je to vlastně prvočíslo? Prvočíslo Definice Přirozené číslo, které má právě 2 kladné dělitele, se nazývá prvočíslo. Definice (alternativní) i Přirozené číslo n je prvoč n slo, právě kc ab => n Jyž pro libc a nebo n >volná a, b G Z platí *• Je vidět, že obě definice popisují totéž? Michal Bulant (Brkos 2016) Proč je dobré míti prvočísla 29.8. - 4.9.2016 6 / 52 Něco málo o prvočíslech Co je to vlastně prvočíslo? Prvočíslo Definice Přirozené číslo, které má právě 2 kladné dělitele, se nazývá prvočíslo Definice (alternativní) Přirozené číslo n je prvočíslo, právě když pro libovolná a, b G Z platí n ab => n a nebo n b. Je vidět, že obě definice popisují totéž? Věta (Základní věta aritmetiky) Každé přirozené číslo se dá jednoznačně (až na pořadí) zapsat jako součin prvočísel. Michal Bulant (Brkos 2016) Proč je dobré míti prvočísla 29.8. - 4.9.2016 6 / 52 Něco málo o prvočíslech Co je to vlastně prvočíslo? Prvočíslo Definice Přirozené číslo, které má právě 2 kladné dělitele, se nazývá prvočíslo Definice (alternativní) Přirozené číslo n je prvočíslo, právě když pro libovolná a, b G Z platí n ab => n a nebo n b. Je vidět, že obě definice popisují totéž? Věta (Základní věta aritmetiky) Každé přirozené číslo se dá jednoznačně (až na pořadí) zapsat jako součin prvočísel. Tuto zásadní větu uvádíme nyní, ale dokážeme později, až k to budeme mít prostředky! Michal Bulant (Brkos 2016) Proč je dobré míti prvočísla 29.8. - 4.9.2016 6 / 52 Něco málo o prvočíslech Co je to vlastně prvočíslo? Předchozí tvrzení nejsou úplně zadarmo, navíc se ukazuje, že zdaleka neplatí při přirozeném rozšíření těchto definic do jiných číselných oborů kde umíme rozumným způsobem sčítat, násobit a krátit (tzv. obory integrity - např. Q, IR, Z[V2], Z[/], Z[^/^5] apod.)- Michal Bulant (Brkos 2016) Proč je dobré míti prvočísla 29.8. - 4.9.2016 Něco málo o prvočíslech Co je to vlastně prvočíslo? Předchozí tvrzení nejsou úplně zadarmo, navíc se ukazuje, že zdaleka neplatí při přirozeném rozšíření těchto definic do jiných číselných oborů, kde umíme rozumným způsobem sčítat, násobit a krátit (tzv. obory integrity - např. Q, IR, Z[V2], Z[/], Z[^/^5] apod.). Příklad 6 = 2 • 3 = (1 + V^Xl - V^Š) Přitom zde selhává i zaměnitelnost obou definic prvočíselnosti, být nerozložitelný (ireducibilní) je obecně slabší vlastnost než být primitivní (alternativní definice) - v tomto příkladu je 2 nerozložitelná, ale přitom 2 | (1 + 5)(1 — y/—5), i když nedělí žádného z činitelů. Michal Bulant (Brkos 2016) Proč je dobré míti prvočísla 29.8. - 4.9.2016 7 / 52 Něco málo o prvočíslech Co je to vlastně prvočíslo? Předchozí tvrzení nejsou úplně zadarmo, navíc se ukazuje, že zdaleka neplatí při přirozeném rozšíření těchto definic do jiných číselných oborů, kde umíme rozumným způsobem sčítat, násobit a krátit (tzv. obory integrity - např. Q, IR, Z[V2], Z[/], Z[^/^5] apod.). Příklad 6 = 2 • 3 = (1 + V^Xl - V^Š) Přitom zde selhává i zaměnitelnost obou definic prvočíselnosti, být nerozložitelný (ireducibilní) je obecně slabší vlastnost než být primitivní (alternativní definice) - v tomto příkladu je 2 nerozložitelná, ale přitom 2 | (1 + 5)(1 — y/—5), i když nedělí žádného z činitelů. V Z[/] žádné takové potíže nenastávají, zde je rozklad na prvočísla jednoznačný: 6 = — / • (1 + i)2 • 3. Michal Bulant (Brkos 2016) Proč je dobré míti prvočísla 29.8. - 4.9.2016 7 / 52 Něco málo o prvočíslech Co je to vlastně prvočíslo? S pomocí programu SAGE, který budeme využívat, lze spočítat např. všechna prvočísla nebo všechna složená čísla v zadaném intervalu: sage: prime.range(10,50) 1 [11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47] 2 sage: [n for n in range(10,30) if not is.prime(n 3 )] [10, 12, 14, 15, 16, 18, 20, 21, 22, 24, 25, 26, 4 27, 28] Michal Bulant (Brkos 2016) Proč je dobré míti prvočísla 29.8. - 4.9.2016 8 / 52 Něco málo o prvočíslech Co je to vlastně prvočíslo? Největší společný dělitel To, že v případě celých čísel prvočísla splňují i alternativní definici, lze snadno dokázat pomocí pojmu největší společný dělitel. Michal Bulant (Brkos 2016) Proč je dobré míti prvočísla 29.8. - 4.9.2016 Něco málo o prvočíslech Co je to vlastně prvočíslo? Největší společný dělitel To, že v případě celých čísel prvočísla splňují i alternativní definici, lze snadno dokázat pomocí pojmu největší společný dělitel. Definice Mějme celá čísla a, b. Libovolné celé číslo m takové, že m | a, m \ b se nazývá společný dělitel čísel a, b. Společný dělitel m > 0 čísel a, b, který je dělitelný libovolným společným dělitelem čísel a, b, se nazývá největší společný dělitel čísel a, b a značí se (a, b). Michal Bulant (Brkos 2016) Proč je dobré míti prvočísla 29.8. - 4.9.2016 9 / 52 Něco málo o prvočíslech Co je to vlastně prvočíslo? Největší společný dělitel To, že v případě celých čísel prvočísla splňují i alternativní definici, lze snadno dokázat pomocí pojmu největší společný dělitel. Definice Mějme celá čísla a, b. Libovolné celé číslo m takové, že m | a, m \ b se nazývá společný dělitel čísel a, b. Společný dělitel m > 0 čísel a, b, který je dělitelný libovolným společným dělitelem čísel a, b, se nazývá největší společný dělitel čísel a, b a značí se (a, b). Analogicky se definuje nejmenší společný násobek [a, b]. Michal Bulant (Brkos 2016) Proč je dobré míti prvočísla 29.8. - 4.9.2016 9 / 52 Něco málo o prvočíslech Co je to vlastně prvočíslo? Největšího společného dělitele lze u malých čísel vyčíst z obrázku - viz http://wiki.sagemath.org/interact/number_theory. Michal Bulant (Brkos 2016) Proč je dobré míti prvočísla 29.8. - 4.9.2016 10 / 52 Něco málo o prvočíslech Jak spočítat GCD? Co je to vlastně prvočíslo? Největšího společného dělitele lze jistě spočítat z rozkladu pokud tedy umíme daná čísla rozložit. sage : gcd(97 * 10~15 , 19~20 * 97~2) 97 Ale co v případě, že chceme spočítat něco takového? gcd(353684060262049920641282849809,\ 97000000000000000) Michal Bulant (Brkos 2016) 4 □ ► < [51 ► Proč je dobré míti prvočísla Něco málo o prvočíslech Co je to vlastně prvočíslo? Euklidův algoritmus Ukazuje, že spočítat největšího společného dělitele je výpočetně daleko snazší než rozkládat čísla na prvočísla. Euklidův algoritmus je založen na větě o dělení se zbytkem (a v ní je rovněž skryt rozdíl např. mezi Z[/] a Zh/=5]). Michal Bulant (Brkos 2016) Proč je dobré míti prvočísla 29.8. - 4.9.2016 12 / 52 Něco málo o prvočíslech Co je to vlastně prvočíslo? Euklidův algoritmus Ukazuje, že spočítat největšího společného dělitele je výpočetně daleko snazší než rozkládat čísla na prvočísla. Euklidův algoritmus je založen na větě o dělení se zbytkem (a v ní je rovněž skryt rozdíl např. mezi Z[/] a Zh/=5]). Pro libovolně zvolená čísla a £ Z, m £ N existují jednoznačně určená čísla q £ Z, r £ {0,1,..., m — 1} tak, že a — qm + r. Michal Bulant (Brkos 2016) Proč je dobré míti prvočísla 29.8. - 4.9.2016 12 / 52 Něco málo o prvočíslech Co je to vlastně prvočíslo? Euklidův algoritmus Ukazuje, že spočítat největšího společného dělitele je výpočetně daleko snazší než rozkládat čísla na prvočísla. Euklidův algoritmus je založen na větě o dělení se zbytkem (a v ní je rovněž skryt rozdíl např. mezi Z[i] a Zh/=5]). Pro libovolně zvolená čísla a £ Z, m £ N existují jednoznačně určená čísla q £ Z, r £ {0,1,..., m — 1} tak, že a — qm + r. Věta (Euklidův algoritmus) Nechť ai, a^ jsou přirozená čísla. Pro každé n > 3, pro které an-\ ^ 0, označme an zbytek po dělení čísla an-2 číslem an-\. Pak po konečném počtu kroků dostaneme a k = 0 a platía/c-i — (ai, a?). Michal Bulant (Brkos 2016) Proč je dobré míti prvočísla 29.8. - 4.9.2016 12 / 52 Něco málo o prvočíslech Co je to vlastně prvočíslo? Z Euklidova algoritmu vyplývá jedno z nejužitečnějších tvrzení v elementární teorii čísel - tzv. Bezoutova věta. Věta (Bezoutova) Pro libovolná celá čísla a, b existuje jejich největší společný dělitel (a, b), pritom existují celá čísla k J tak, že (a, b) = ka + Ib. Michal Bulant (Brkos 2016) Proč je dobré míti prvočísla 29.8. - 4.9.2016 13 / 52 Něco málo o prvočíslech Co je to vlastně prvočíslo? Z Euklidova algoritmu vyplývá jedno z nejužitečnějších tvrzení v elementární teorii čísel - tzv. Bezoutova věta. Věta (Bezoutova) Pro libovolná celá čísla a, b existuje jejich největší společný dělitel (a, b), pritom existují celá čísla k J tak, že (a, b) = ka + Ib. Příklad O Rozhodněte, jestli je možné pomocí mincí o nominální hodnotě 5 a 7 Kč zaplatit (s vracením) jakoukoliv částku. Michal Bulant (Brkos 2016) Proč je dobré míti prvočísla 29.8. - 4.9.2016 13 / 52 Něco málo o prvočíslech Co je to vlastně prvočíslo? Z Euklidova algoritmu vyplývá jedno z nejužitečnějších tvrzení v elementární teorii čísel - tzv. Bezoutova věta. Věta (Bezoutova) Pro libovolná celá čísla a, b existuje jejich největší společný dělitel (a, b), pritom existují celá čísla k J tak, že (a, b) = ka + Ib. Příklad O Rozhodněte, jestli je možné pomocí mincí o nominální hodnotě 5 a 7 Kč zaplatit (s vracením) jakoukoliv částku. O Bruče Willis a Samuel Jackson mají ve filmu Smrtonosná past 3 za úkol zlikvidovat bombu pomocí 4 galonů vody, přičemž k dispozici mají pouze nádoby na 3, resp. 5 galonů. Michal Bulant (Brkos 2016) Proč je dobré míti prvočísla 29.8. - 4.9.2016 13 / 52 Něco málo o prvočíslech Co je to vlastně prvočíslo? Z Euklidova algoritmu vyplývá jedno z nejužitečnějších tvrzení v elementární teorii čísel - tzv. Bezoutova věta. Věta (Bezoutova) Pro libovolná celá čísla a, b existuje jejich největší společný dělitel (a, b), pritom existují celá čísla k J tak, že (a, b) = ka + Ib. Příklad O Rozhodněte, jestli je možné pomocí mincí o nominální hodnotě 5 a 7 Kč zaplatit (s vracením) jakoukoliv částku. O Bruče Willis a Samuel Jackson mají ve filmu Smrtonosná past 3 za úkol zlikvidovat bombu pomocí 4 galonů vody, přičemž k dispozici mají pouze nádoby na 3, resp. 5 galonů. O Mezi největším společným dělitelem a nejmenším společným násobkem celých čísel a, b platí vztah |a • b\ — (a, b) • [a, b\. Michal Bulant (Brkos 2016) Proč je dobré míti prvočísla 29.8. - 4.9.2016 13 / 52 Něco málo o prvočíslech Co je to vlastně prvočíslo? Něco málo o prvočíslech Co je to vlastně prvočíslo? Důležité důsledky Jsou-li a, b nesoudělná celá čísla a platí-li a b • c, pak nutně a Michal Bulant (Brkos 2016) Proč je dobré míti prvočísla 29.8. - Něco málo o prvočíslech Co je to vlastně prvočíslo? Důležité důsledky Věta i Jsou-li a, b nesoudělná celá čísla a platí-li a b • c, pak nutně a c. j Věta Pokud je p prvočíslo, pak splňuje i alternativní definici prvočísel n ost i. Michal Bulant (Brkos 2016) Proč je dobré míti prvočísla 29.8. - 4.9.2016 15 / 52 Něco málo o prvočíslech Co je to vlastně prvočíslo? Důležité důsledky Jsou-li a, b nesoudělná celá čísla a platí-li a b - c, pak nutně a Pokud je p prvočíslo, pak splňuje i alternativní definici prvočíselnosti. j ] Důkaz základní věty aritmetiky Teprve nyní jsme schopni základní větu aritmetiky (alespoň v náznaku) dokázat. Michal Bulant (Brkos 2016) Proč je dobré míti prvočísla 29.8. - 4.9.2016 15 / 52 Něco málo o prvočíslech Co je to vlastně prvočíslo? Příklad Dobrou vlastností Euklidova algoritmu (i jeho rozšírení, které zároveň najde koeficienty do Bezoutovy rovnosti) je to, zeje velmi efektivní. Zatímco rozkládat čtyřciferná čísla na prvočísla na papíre většině z nás zabere asi dost času, spočítat největšího společného dělitele dvou takových čísel je daleko snazší. A podobně je na tom i počítač (i když s čísly podstatně většími - o několika stovkách cifer). Michal Bulant (Brkos 2016) Proč je dobré míti prvočísla 29.8. - 4.9.2016 16 / 52 Něco málo o prvočíslech Co je to vlastně prvočíslo? Příklad Dobrou vlastností Euklidova algoritmu (i jeho rozšírení, které zároveň najde koeficienty do Bezoutovy rovnosti) je to, zeje velmi efektivní. Zatímco rozkládat čtyřciferná čísla na prvočísla na papíře většině z nás zabere asi dost času, spočítat největšího společného dělitele dvou takových čísel je daleko snazší. A podobně je na tom i počítač (i když s čísly podstatně většími - o několika stovkách cifer). sage: gcd(10~2016+1,19~1000-1) 1 sage: xgcd(42,27) (3, 2, -3) i: L 1! II Michal Bulant (Brkos 2016) Proč je dobré míti prvočísla 29.8. - 4.9.2016 16 / 52 Něco málo o prvočíslech Co je to vlastně prvočíslo? Příklad Dobrou vlastností Euklidova algoritmu (i jeho rozšírení, které zároveň najde koeficienty do Bezoutovy rovnosti) je to, zeje velmi efektivní. Zatímco rozkládat čtyřciferná čísla na prvočísla na papíře většině z nás zabere asi dost času, spočítat největšího společného dělitele dvou takových čísel je daleko snazší. A podobně je na tom i počítač (i když s čísly podstatně většími - o několika stovkách cifer). sage: gcd(10~2016+1,19~1000-1) 1 sage: xgcd(42,27) (3, 2, -3) 1! 21 2: y Pro další úvahy si všimněme, že Sage umí velmi rychle odpovědět na otázku, jestli je nějaké číslo prvočíslo, přitom jej ale často neumí rozložit (a dokonce nezná ani žádného dělitele). sage: is_prime (10~2016 +1) Z Proč je dobré míti prvočísla 29.8. - 4.9.2016 16 / 52 Michal Bulant (Brkos 2016) Něco málo o prvočíslech Eulerova funkce 4> Eulerova funkce (p Definice 1 Nechť n € N. Definujme Eulerovu funkci
Eulerova funkce (p Definice 1 Nechť n € N. Definujme Eulerovu funkci
Důkaz. O Pomocí principu inkluze a exkluze na základě zjištění počtu čísel soudělných snv určitém intervalu. □ Michal Bulant (Brkos 2016) Proč je dobré míti prvočísla 29.8. - 4.9.2016 18 / 52 Něco málo o prvočíslech Eulerova funkce cf> O Pomocí principu inkluze a exkluze na základě zjištění počtu čísel soudělných snv určitém intervalu. O Tvrzení lze odvodit i jiným způsobem na základě poznatku (r?, atí) = 1 <^> (r?, a) = 1 A (r?, b) = 1, spolu se snadno odvoditelným výsledkem
3 platí p proto nevyhovuje jiné číslo než 1. 3P_2- Dále 2 3l,3 32. Michal Bulant (Brkos 2016) Proč je dobré míti prvočísla 29.8. - 4.9.2016 23 / 52 Kongruence - užitečná zkratka Fermatova a Eulerova věta Některé důležité věty II. Věta (Eulerova) Je-li a G 1j, m € N a (a, m) = 1, pak a^m) = 1 (mod m). Michal Bulant (Brkos 2016) Proč je dobré míti prvočísla 29.8. - 4.9.2016 24 / 52 Kongruence - užitečná zkratka Fermatova a Eulerova věta Některé důležité věty II. Věta (Eulerova) Je-li a G Z, m € N a (a, m) = 1, pak a^m) = 1 (mod m). Věta (Wilsonova) Přirozené číslo n je prvočíslo, právě když (n- 1)! = -1 (mod n) Michal Bulant (Brkos 2016) Proč je dobré míti prvočísla 29.8. - 4.9.2016 24 / 52 Kongruence - užitečná zkratka Fermatova a Eulerova věta Příklad Pro každé n G N určete (n! + l,(n + l)!). Michal Bulant (Brkos 2016) Proč je dobré míti prvočísla 29.8. - 4.9.2016 25 / 52 Kongruence - užitečná zkratka Fermatova a Eulerova věta Příklad Pro každé n G N určete (n! + l,(n + l)!). Řešení Michal Bulant (Brkos 2016) Proč je dobré míti prvočísla 29.8. - 4.9.2016 25 / 52 Kongruence - užitečná zkratka Fermatova a Eulerova věta Řešení lineárních kongruencí Jak za chvíli uvidíme, důležité pro nás bude umět „dělit číslo b číslem modulo m", přesněji řešit kongruence tvaru ax = b (mod m) se zadanými celými a, b, m £ N a neznámými celými x. Michal Bulant (Brkos 2016) Proč je dobré míti prvočísla 29.8. - 4.9.2016 Kongruence - užitečná zkratka Fermatova a Eulerova věta Řešení lineárních kongruencí Jak za chvíli uvidíme, důležité pro nás bude umět „dělit číslo b číslem a modulo m", přesněji řešit kongruence tvaru ax = b (mod m) se zadanými celými a, b, m £ N a neznámými celými x. Výše uvedená kongruence s neznámou x má řešení, právě když (a, m) \ b. J Poznámka Nejdůležitejším případem je situace, kdy b — 1; v takovém případě lze řešení (jediné modulo m) nalézt pomocí Euklidova algoritmu a Bezoutovy věty. Michal Bulant (Brkos 2016) Proč je dobré míti prvočísla 29.8. - 4.9.2016 26 / 52 Kongruence - užitečná zkratka Fermatova a Eulerova věta K motivačnímu příkladu - RSA Připomeňme, že při inicializaci protokolu RSA si každý účastník volí veřejný klíč e a k němu dopočítává soukromý d tak, aby e • d = 1 (mod