diff --git a/07-teorie-cisel/teorie-cisel.tex b/07-teorie-cisel/teorie-cisel.tex index 5219f2b9495c606fbf443f0b83fee2bc8c612a93..5231c1c1d895e22e213745045970b6aff39e1594 100644 --- a/07-teorie-cisel/teorie-cisel.tex +++ b/07-teorie-cisel/teorie-cisel.tex @@ -282,7 +282,7 @@ Pro každé $n>1$ a $x\perp p$ platí $x^{\varphi(n)}\equiv 1\pmod n$. \proof Uvažme množinu $H = \{x^0, x^1, x^2, \ldots\}$ (násobíme modulo~$n$). Jelikož~$x$ je invertibilní prvek a ty jsou uzavřené na násobení, -je~$H$ podmnožínou~$\Zsn$. Dokážeme, že je dokonce podgrupou. +je~$H$ podmnožinou~$\Zsn$. Dokážeme, že je dokonce podgrupou. Jelikož $x^i$ mohou nabývat jen konečně mnoha hodnot, musí se nějaká hodnota zopakovat. Uvažme první takové opakování, tedy nejmenší~$j$ @@ -305,7 +305,7 @@ Tím pádem je $\varphi(n) = jk$ pro nějaké~$k$, takže můžeme psát $x^{\varphi(n)} \equiv x^{jk} \equiv (x^j)^k \equiv 1^k \equiv 1$. \qed -\subsection{Činská věta o~zbytcích} +\subsection{Čínská věta o~zbytcích} Nyní se zamysleme nad tím, jak najít číslo~$x$, které dává modulo~$N_1$ zadaný zbytek~$a_1$ a modulo~$N_2$ zbytek~$a_2$. Řešíme tedy soustavu kongruencí: @@ -363,7 +363,7 @@ $N=N_1\cdot\ldots\cdot N_k$ a $a_i\in\Z_{N_i}$ pro $i=1,\ldots,k$. Pak existuje právě jedno $x\in\Z_N$ takové, že $x\bmod N_i = a_i$ pro všechna~$i$. } -\theoremn{Algebraicka formulace CRT}{ +\theoremn{Algebraická formulace CRT}{ Nechť $N_1,\ldots,N_k$ jsou navzájem nesoudělná kladná čísla a $N=N_1\cdot\ldots\cdot N_k$. Pak funkce $f: \Z_N \rightarrow Z_{N_1} \times \ldots \times \Z_{N_k}$ @@ -372,7 +372,7 @@ je izomorfismus okruhů $Z_N$ a $Z_{N_1} \times \ldots \times \Z_{N_k}$. } \proof -Pro $k=1$ jsou obě věty triviální, pro $k=2$ jsme je už dokazali. +Pro $k=1$ jsou obě věty triviální, pro $k=2$ jsme je už dokázali. Dále pokračujeme indukcí podle~$k$, přičemž případ pro $k=2$ použijeme jako indukční krok. \qed @@ -429,14 +429,14 @@ a~tím pádem stejný počet čísel~$x$. \endlist Z~tohoto lemmatu plyne, že kdykoliv umíme číslo~$n$ faktorizovat (rozložit na součin -mocnin různých prvočísel), umíme efektivně spočitat $\varphi(n)$. Žádný efektivní způsob, +mocnin různých prvočísel), umíme efektivně spočítat $\varphi(n)$. Žádný efektivní způsob, který nepotřebuje faktorizaci, není znám. \section{Faktorizace versus prvočíselnost} Mezi základní algoritmické problémy teorie čísel patří \em{faktorizace} celých čísel (rozklad na součin prvočísel) a testování, zda dané číslo je prvočíslem. Jakkoliv podobně -tyto problémy vypadají, jejich obtíznost je zásadně různa. +tyto problémy vypadají, jejich obtížnost je zásadně různá. Faktorizace: @@ -520,12 +520,12 @@ Je-li $n$ složené číslo, které není Carmichaelovo, Fermatův test ho usvě \proof Spusťme algoritmus s~daným~$n$. Pokud narazíme na Euklidova svědka, rovnou odpovíme správně. -Stačí tedy lemma dokazat pro $a$ rovnoměrně náhodně vybrané z~$\Zsn$. +Stačí tedy lemma dokázat pro $a$ rovnoměrně náhodně vybrané z~$\Zsn$. Uvažme podmnožinu $H\subseteq\Zsn$ čísel, která nejsou Fermatovými svědky. Tedy: $$ H = \{ a\in\Zsn \mid a^{n-1}\bmod n = 1 \}. $$ -Dokážeme, že $H$ je podgroupu~$\Zsn$. Jistě platí $1\in H$. Pokud $a,b\in H$, +Dokážeme, že $H$ je podgrupu~$\Zsn$. Jistě platí $1\in H$. Pokud $a,b\in H$, máme $(ab)^{n-1} \equiv a^{n-1}b^{n-1} \equiv 1\cdot 1 \equiv 1$, takže $ab\in H$. Podobně ověříme, že pro $a\in H$ je $a\inv\in H$. @@ -615,7 +615,7 @@ Izomorfismus v~jednom směru je funkce $e: x \mapsto g^x \bmod p$, v~druhém sm její inverze, které se říká \em{diskrétní logaritmus.} Zatímco mocniny modulo~$p$ dokážeme počítat efektivně (v~čase $\O(b^3)$), diskrétní logaritmus nikoliv. Podobně jako u~faktorizace neznáme žádný polynomiální -algorimus, ale známe zajímavé subexponenciální algoritmy a polynomiální kvantový algoritmus. +algoritmus, ale známe zajímavé subexponenciální algoritmy a polynomiální kvantový algoritmus. Často potřebujeme nějaký generátor najít. K~tomu se hodí otestovat, zda dané číslo~$g$ je generátorem. @@ -697,7 +697,7 @@ počet odmocnin. 0~má jen jednu (součinem nenulových prvků není nikdy~0). Odmocniny prvku~$a$ jsou kořeny kvadratického polynomu $x^2-a$ a ty mohou v~libovolném tělese existovat nejvýš~2. To v~kombinaci s~předchozím odstavcem dává, -že každy nenulový prvek má 0 nebo 2 odmocniny. +že každý nenulový prvek má 0 nebo 2 odmocniny. Každý nenulový prvek~$\Zp$ leží v~$\Zsp$, takže ho můžeme napsat jako mocninu nějakého generátoru~$g$. Polovinu~$\Zsp$ tvoří sudé mocniny $g^{2k}$ a ty jistě mají druhou @@ -718,7 +718,7 @@ dvě: 1 a~$-1$. Ovšem 1 to být nemůže, protože by se mocniny generátoru za opakovat dřív, než by vygenerovaly celou~$\Zsp$. \qed -Jelikož diskrétní logaritmy je těžké počitat, bude se hodit efektivnější test +Jelikož diskrétní logaritmy je těžké počítat, bude se hodit efektivnější test na kvadratické zbytky: \theoremn{Eulerovo kriterium}{ @@ -786,7 +786,7 @@ vyjde nulové, pak najdeme dvě různá~$x$. Toto lze zobecnit pro libovolné složené~$n$ a převést tak odmocňování modulo~$n$ na odmocňování modulo prvočíselné faktory~$n$, pokud umíme $n$~faktorizovat. -Žádný efektivní způsob počitání diskrétních odmocnin bez faktorizace~$n$ není znám. +Žádný efektivní způsob počítání diskrétních odmocnin bez faktorizace~$n$ není znám. (Možnost, že $n$ může mít násobné faktory, s~dovolením nebudeme zkoumat.) \sectionstar{Rozbor Rabinova-Millerova testu} @@ -837,7 +837,7 @@ takže řád musí být sudé číslo. Pro liché~$m$ tedy nemůže platit $a^m\ ani $a^m\equiv_n\nobreak 1$. \qed -Nyní se přesuneme ke~kroku~\itemref{rmmone}. Z~přechozího lemmatu víme, že pro některé volby čísla~$a$ v~algoritmu +Nyní se přesuneme ke~kroku~\itemref{rmmone}. Z~předchozího lemmatu víme, že pro některé volby čísla~$a$ v~algoritmu je $b_0\not\equiv 1$. Můžeme proto zvolit~$i$ ($0\le i<t$) takové, že $b_{i+1}\equiv a^{2^{i+1}m} \equiv 1$ pro všechna možná~$a\in\Z_n$, ale $b_i\equiv a^{2^im} \not\equiv 1$ pro alespoň jedno takové~$a$. Jakmile dokážeme, že $b_i\not\equiv\pm 1$ pro alespoň polovinu z~možných~$a$, máme vyhráno. @@ -848,7 +848,7 @@ existuje alespoň $\vert\Z^*_n\vert/2$ čísel $a\in\Z^*_n$ takových, že $a^{2 } \proof -Ještě jednou stejný trik s~podgroupou. Tentokrát zvolíme $G = \{ x\in\Z^*_n \mid a^{2^im} \equiv \pm1 \}$, +Ještě jednou stejný trik s~podgrupou. Tentokrát zvolíme $G = \{ x\in\Z^*_n \mid a^{2^im} \equiv \pm1 \}$, což je evidentně podgrupa~$\Z^*_n$, a~opět chceme dokázat, že alespoň jeden prvek leží mimo ni. Z~volby~$i$ víme, že existuje~$c$, pro něž $c^{2^im}\not\equiv 1$. Pokud $c^{2^im}\not\equiv -1$, máme vyhráno, @@ -863,7 +863,7 @@ a $d^{2^im} \equiv_{n/p^e} 1$. Proto $d^{2^im}$ nemůže být modulo~$n$ ani~1, \sectionstar{Ještě jeden test prvočíselnosti} Nakonec předvedeme ještě jeden algoritmus pro pravděpodobnostní testování prvočísel, -jehož korektost je snadné dokázat. Daní za jednoduchost důkazu ovšem bude to, že +jehož korektnost je snadné dokázat. Daní za jednoduchost důkazu ovšem bude to, že náš test může udělat chybu na~obě strany: jak prohlásit složené číslo za~prvočíslo, tak prvočíslo za~složené. Bude fungovat následovně: