From aef897af1ee613bbd4fb2fcc2b28218998436c03 Mon Sep 17 00:00:00 2001 From: Martin Mares <mj@ucw.cz> Date: Sat, 12 Apr 2025 16:20:09 +0200 Subject: [PATCH] =?UTF-8?q?Teorie=20=C4=8D=C3=ADsel:=20Korektury?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 07-teorie-cisel/teorie-cisel.tex | 128 +++++++++++++++++-------------- tex/adsmac.tex | 2 +- 2 files changed, 70 insertions(+), 60 deletions(-) diff --git a/07-teorie-cisel/teorie-cisel.tex b/07-teorie-cisel/teorie-cisel.tex index 744bc22..1d8bb17 100644 --- a/07-teorie-cisel/teorie-cisel.tex +++ b/07-teorie-cisel/teorie-cisel.tex @@ -22,10 +22,13 @@ Nejprve připomeneme základní značení: anglického \em{greatest common divisor.}} Případu $x=y=0$ se chceme vyhnout, protože tam je každé číslo společným dělitelem. \:$x\perp y$ značí, že $x$ a $y$ jsou \em{nesoudělná,} tedy $\gcd(x,y)=1$. -\:$x\equiv y\pmod n$ je \em{kongruence modulo~$n>0$,} která znamená, že $x$ a~$y$ +\:$x\equiv_n y$ je \em{kongruence modulo~$n>0$,} která znamená, že $x$ a~$y$ dávají stejný zbytek modulo~$n$. To je totéž, jako že $n\divs (x-y)$. - Někdy to budeme zkracovat na $x\equiv_n y$ - a~pokud bude z~kontextu jasné, modulo čím počítáme, budeme psát prostě $x\equiv y$. + Často se také píše + $$ + x\equiv y \pmod n. + $$ + Pokud bude z~kontextu jasné, modulo čím počítáme, budeme psát prostě $x\equiv y$. \endlist \section{Základní aritmetické algoritmy} @@ -62,21 +65,21 @@ Pečlivější analýzou, která bude brát v~úvahu, jak se během výpočtu vy Často se nám bude hodit \em{rozšířený Euklidův algoritmus,} který získáme následovně. \lemma{ -Všechny mezivýsledky v~Euklidově algoritmu jsou lineární kombinace vstupu~$x$ a~$y$. -Koeficienty této lineární kombinace můžeme během výpočtu udržovat bez asymptotického -zpomalení. +Všechny mezivýsledky v~Euklidově algoritmu jsou lineární kombinace vstupů~$x$ a~$y$. +Ke každému mezivýsledku můžeme během výpočtu udržovat i koeficienty příslušné lineární +kombinace, aniž bychom algoritmus asymptoticky zpomalili. } \proof Pro základní variantu algoritmu to snadno dokážeme indukcí podle počtu kroků. Označíme $x'$ a $y'$ pracovní proměnné algoritmu. Na začátku je $x'=1\cdot x + 0\cdot y$ a $y'=0\cdot x + 1\cdot y$. Kdykoliv odečteme od $x'=\alpha x + \beta y$ proměnnou -$y'=\gamma x + \delta y$, získáme $x-y = (\alpha-\gamma)x + (\beta-\delta)y$. +$y'=\gamma x + \delta y$, získáme $x'-y' = (\alpha-\gamma)x + (\beta-\delta)y$. Jeden krok vylepšené varianty je zkratkou za více kroků varianty základní. Počítáme-li $x'\bmod y'$ pro $x'=\alpha x + \beta y$ a $y'=\gamma x + \delta y$, provádíme vlastně $d=\lfloor x'/y'\rfloor$ odečtení $y'$ od~$x'$. Výsledek tedy bude -$(\alpha-d\gamma)x + (\beta-d\delta y)$. +$(\alpha-d\gamma)x + (\beta-d\delta)y$. \qed Finální výsledek $\gcd(x,y)$ je ovšem jedním z~mezivýsledků, takže dostáváme: @@ -92,7 +95,7 @@ koeficienty.} V~tomto oddílu připomeneme základní pojmy z~obecné algebry. \defn{ -\em{Algebra} je tvořena nosnou množinou spolu s~nějakými operacemi. \hbox{$k$-ární} operací nazýváme +\em{Algebra} je tvořena nosnou množinou spolu s~nějakými \em{operacemi.} \hbox{$k$-ární} operací nazýváme funkci, která $k$-ticím prvků z~nosné množiny přiřazuje opět prvky nosné množiny. Nulární operace jsou {\I konstanty.} } @@ -113,7 +116,7 @@ $\cdot$ binární operace nad $G$, \1~konstanta, ${}\inv$ unární operace nad~$ a platí následující axiomy: \tightlist{n.} \:$(a\cdot b)\cdot c = a\cdot (b\cdot c)$ {\quad \I (asociativita)} - \:$a\cdot \1 = a$ {\quad \I (prvek \/\1 je jednotkový)} + \:$a\cdot \1 = \1\cdot a = a$ {\quad \I (prvek \/\1 je jednotkový)} \:$a\cdot (a\inv)=(a^{\-1}\cdot a)=\1$ \em{($a\inv$ je prvek inverzní k~$a$)} \endlist \:V~\em{komutativní grupě} navíc platí $a\cdot b = b\cdot a$ \em{(komutativita)}. @@ -134,10 +137,10 @@ a platí následující axiomy: \:$(\Z,+,0,-)$ (celá čísla spolu s~obvyklým sčítáním, nulou a změnou znaménka) tvoří cyklickou grupu (generátory jsou 1 a $-1$). \:$(2\Z,+,0,-)$ (sudá celá čísla spolu s~obvyklým sčítáním, nulou a změnou znaménka) tvoří podgrupu předchozí grupy, -která je také cyklická (rozmyslete si, že každá podgrupa cyklické grupy je cyklická), +která je také cyklická (rozmyslete si, že každá podgrupa cyklické grupy je cyklická). \:$(\Z_n,+_{\bmod n},0,-)$ (čísla 0, 1, \dots, $n-1$ spolu se sčítáním modulo~$n$, nulou a změnou -znaménka) tvoří cyklickou grupu (generátorem je třeba~1; které jsou další?), -\:$({\bb Q},\cdot,1,?)$ (racionální čísla s~násobením) nemohou tvořit grupu, jelikož k~nule neexistuje inverzní prvek, +znaménka) tvoří cyklickou grupu (generátorem je třeba~1; které jsou další?). +\:$({\bb Q},\cdot,1,?)$ (racionální čísla s~násobením) nemohou tvořit grupu, jelikož k~nule neexistuje inverzní prvek. \:$({\bb Q}-\{0\},\cdot,1,1/x)$ (racionální čísla bez nuly s~násobením a převrácenou hodnotou) grupu tvoří, není cyklická. \:$(\Z_n-\{0\},\cdot_{\bmod n},?)$ (čísla 1\dots$n-1$ s~násobením modulo~$n$) pro některá $n$ grupou je, @@ -171,7 +174,7 @@ Pokud má konečná grupa $G$ nějakou podgrupu $H$, platí $|H| \divs |G|$. \:$(a+b)\cdot c = a\cdot c + b\cdot c$ \quad\em{(distributivita)}. \endlist - Algebraikové někdy připouští nekomutativní okruhy (s~nekomutativní operací~$+$), + Algebraikové někdy připouští nekomutativní okruhy (s~nekomutativní operací~$\cdot$), naše okruhy budou vždy komutativní. \:Prvek $a\in R$ má \em{multiplikativní inverzi} $a\inv$, pokud platí $a\cdot a\inv = \1$. @@ -265,7 +268,7 @@ Sčítání, odčítání, násobení i dělení v~tomto tělese můžeme počí \subsection{Malá Fermatova a Eulerova věta} \theoremn{malá Fermatova}{ -Pro každé prvočíslo~$p$ a číslo $x\perp p$ platí $x^{p-1}\equiv 1\pmod p$. +Pro každé prvočíslo~$p$ a číslo $x\perp p$ platí $x^{p-1}\equiv_p 1$. } \corr{ @@ -276,13 +279,13 @@ Malou Fermatovu větu nebudeme dokazovat přímo, plyne totiž z~následující obecnější věty díky tomu, že pro prvočísla platí $\varphi(p) = p-1$. \theoremn{Eulerova}{ -Pro každé $n>1$ a $x\perp p$ platí $x^{\varphi(n)}\equiv 1\pmod n$. +Pro každé $n>1$ a $x\perp p$ platí $x^{\varphi(n)}\equiv_n 1$. } \proof -Uvažme množinu $H = \{x^0, x^1, x^2, \ldots\}$ (násobíme modulo~$n$). +Uvažme množinu $H = \{x^0, x^1, x^2, \ldots\}$ (umocňujeme modulo~$n$). Jelikož~$x$ je invertibilní prvek a ty jsou uzavřené na násobení, -je~$H$ podmnožinou~$\Zsn$. Dokážeme, že je dokonce podgrupou. +je~$H$ podmnožinou~$\Zsn$. Dokážeme, že je dokonce podgrupou~$\Zsn$. 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$ @@ -337,11 +340,11 @@ Zamysleme se nad jejími vlastnostmi: \list{n.} \:Nejprve si všimneme, že $f$ je prostá. -Pokud $f(x)=f(y)$, pak $x \bmod N = y \bmod N_1$, tedy $N_1 \divs (x-y)$. +Pokud $f(x)=f(y)$, pak $x \bmod N_1 = y \bmod N_1$, tedy $N_1 \divs (x-y)$. Podobně dostaneme $N_2 \divs (x-y)$. Jelikož $N_1\perp N_2$, plyne z~toho také $N \divs (x-y)$. To je ovšem pro $x,y\in\Z_N$ možné jen tehdy, když $x=y$. -\:Každá prostá funkce mezi dvěma stejně velkými množinami ovšem musí být bijekce. +\:Každá prostá funkce mezi dvěma stejně velkými množinami musí být bijekce. To znamená, že naše soustava kongruencí má pro každé $a_1$ a~$a_2$ právě jedno řešení $f\inv(a_1,a_2)$. @@ -403,13 +406,13 @@ a položíme $u_1=w_1N_2$. Bude platit $f(u_1) = f(w_1N_2) = w_1f(N_2) \subsection{Eulerova funkce} -Už jsme zavedli funkci~$\varphi(n)$, která udává, kolik prvků ze~$Z_n$ je nesoudělných s~$n$, +Už jsme zavedli funkci~$\varphi(n)$, která udává, kolik prvků ze~$\Zn$ je nesoudělných s~$n$, tedy invertibilních. Nyní se podívejme, jak tuto funkci počítat. \lemma{Pro Eulerovu funkci~$\varphi$ platí: \list{n.} - \:$\varphi(p) = p-1$ - \:$\varphi(p^k) = (p-1)p^{k-1}$ + \:$\varphi(p) = p-1$. + \:$\varphi(p^k) = (p-1)p^{k-1}$. \:$\varphi(mn) = \varphi(m)\varphi(n)$, kdykoliv $m\perp n$. \endlist } @@ -422,9 +425,9 @@ tedy invertibilních. Nyní se podívejme, jak tuto funkci počítat. Zbývá tedy $(1-(1/p))p^k$ nesoudělných, což je rovno uvedenému výrazu. \:Využijme bijekci $x \mapsto (a\bmod m, a\bmod n)$ z~CRT. Číslo $x$ je nesoudělné s~$mn$ -právě tehdy, když je nesoudělné s~$m$ a současně s~$n$. To je totéž jako že $a$ je nesoudělné s~$m$ -a~současně $b$ nesoudělné s~$n$. Tomu odpovídá $\varphi(m)\cdot\varphi(n)$ dvojic zbytků, -a~tím pádem stejný počet čísel~$x$. +právě tehdy, když je nesoudělné s~$m$ a současně s~$n$. To je totéž jako že ve dvojici +zbytků $(a,b)$ je $a$ nesoudělné s~$m$ a~současně $b$ nesoudělné s~$n$. Takových dvojic +je $\varphi(m)\cdot\varphi(n)$ a každá odpovídá právě jednomu nesoudělnému~$x$. \qeditem \endlist @@ -468,7 +471,7 @@ Jak navrhnout pravděpodobnostní test prvočíselnosti? Testujeme-li číslo~$n vygenerovat rovnoměrně náhodné $a\in\{2,\ldots,n-1\}$ a otestovat, zda $a$ je dělitelem~$n$. Pokud je, odpovíme, že $n$ je složené. Jinak odpovíme, že $n$ je prvočíslo. -Jak dobrý tento test je? Doběhne vždy v~čase $\O(b^3)$. +Jak dobrý tento test je? Doběhne vždy v~čase $\O(b^2)$. Pokud odpoví \Comp, je to vždy pravda. Pokud odpoví \Prime, může se mýlit. Pro prvočíslo tedy vždy odpoví \Prime, ale pro složené číslo může odpovědět špatně. @@ -579,12 +582,13 @@ odpovídá správně a složená čísla prohlašuje za prvočísla s~pravděpod } Důkaz je poměrně náročný, naleznete ho například v~knize Computational Number Theory -od Victora Shoupa. Zjednodušenou verzi (pro konstantu $1/2$ namísto $1/4$) uvádíme níže. +od Victora Shoupa. Zjednodušenou verzi (pro konstantu $1/2$ namísto $1/4$) uvádíme +v~oddílu~\secref{rmproof}. \rem{ Za~zmínku ještě stojí, že původní Millerův test byl deterministický a pan Miller o~něm dokázal, že pokud platí rozšířená Riemannova hypotéza, má každé složené číslo svědka -(Fermatova či Riemannova), který je jen logaritmicky velký. Zda je to pravda, to se dosud neví, +(Fermatova či Riemannova), který je jen logaritmicky velký. Zda hypotéza platí, se dosud neví, nicméně pan Rabin později nahlédl, že svědků vždy existuje alespoň $3/4\cdot n$, a randomizovaný algoritmus byl na~světě. } @@ -595,8 +599,8 @@ a randomizovaný algoritmus byl na~světě. generovat náhodná $b$-bitová čísla (začínající na~1), testovat, zda to jsou prvočísla, a~opakovat, dokud nedostaneme prvočíslo. -Jak efektivní tento přístup bude? Je známo, že hustota prvočísel okolo~$N$ -je přibližně $1/\ln N$. Tudíž pravděpodobnost, že náhodné $b$-bitové číslo +Jak efektivní tento přístup bude? Je známo, že hustota prvočísel okolo~$n$ +je přibližně $1/\ln n$. Tudíž pravděpodobnost, že náhodné $b$-bitové číslo bude prvočíslem, je $\Theta(1/b)$. Podle lemmatu o~chození se džbánem pro vodu tedy na prvočíslo narazíme po průměrně $\Theta(b)$ pokusech. @@ -665,7 +669,7 @@ Ovšem najdeme-li takové~$j$, dostaneme libovolné $g^k$ jako $g^{ijk} \equiv ( Grupa $\Zsp$ má $\varphi(p-1)$ generátorů. } -Generátory budeme často potřebovat v~případech, kdy $p=2q+1$, kde $q$ je také prvočíslo. +Generátory budeme často potřebovat v~případech, kdy $p=2q+1$ a $q$ je také prvočíslo. Tehdy $\varphi(p-1) = \varphi(2q) = \varphi(2)\varphi(q) = 1\cdot (q-1) = q-1 \approx p/2$. Generátory tedy tvoří přibližně polovinu prvků~$\Zsp$, takže po průměrně dvou pokusech nějaký najdeme. @@ -756,7 +760,7 @@ Tohle není náhoda: \theorem{ V~každém tělese $\Zp$ má prvek 0 právě jednu odmocninu, $(p-1)/2$ prvků má dvě odmocniny (těmto prvkům se říká \em{kvadratické zbytky, QR}) a zbylých $(p-1)/2$ prvků nemá žádnou -(tak řečené \em{kvadratické nezbytky, non-QR}). +(\em{kvadratické nezbytky}\foot{Za tento termín se omlouváme. Smysl moc nedává, ale je tradiční.}). Zvolíme-li libovolný generátor~$\Zp$, kvadratické zbytky jsou ty prvky, jejichž diskrétní logaritmy jsou sudé. } @@ -784,7 +788,7 @@ Pro libovolný generátor~$g$ platí $g^{(p-1)/2} \equiv -1$. } \proof -$g^{(p-1)/2}$ je odmocnina z~$g^(p-1) \equiv 1$. Odmocniny z~jedničky existují +$g^{(p-1)/2}$ je odmocnina z~$g^{(p-1)} \equiv 1$. Odmocniny z~jedničky existují dvě: 1 a~$-1$. Ovšem 1 to být nemůže, protože by se mocniny generátoru začaly opakovat dřív, než by vygenerovaly celou~$\Zsp$. \qed @@ -794,7 +798,7 @@ na kvadratické zbytky: \theoremn{Eulerovo kriterium}{ Pro $x\in\Zsp$ je $x^{(p-1)/2}$ rovno~1, pokud $x$ je kvadratický zbytek, -a~rovno $-1$, pokud není. +a~jinak rovno $-1$. } \proof @@ -811,11 +815,11 @@ $$ Pro $x\equiv g^{2k+1}$ (není kvadratický zbytek), vyjde $$ \left( g^{2k+1} \right) ^{p-1\over 2} -\equiv g^{2k(p-1)\over 2} \cdot g^{p-1} +\equiv g^{2k(p-1)\over 2} \cdot g^{p-1\over 2} \equiv 1 \cdot (-1) \equiv -1. $$ -\qed +\qedmath \corr{ Množina všech kvadratických zbytků tvoří podgrupu~$\Zsp$. @@ -828,7 +832,7 @@ Testovat, zda číslo je kvadratickým zbytkem, lze v~čase $\O(b^3)$. \subsection{Výpočet diskrétních odmocnin} Prvočísla existují ve dvou \uv{příchutích}: $p = 4\ell+1$ a $p = 4\ell+3$. Je překvapivě, -jak se v~mnoha situacích tyto dva druhy prvočísel chovají různě. +jak různě se v~mnoha situacích tyto dva druhy prvočísel chovají. Pokud $p = 4\ell+3$, je výpočet diskrétní odmocniny snadný. Pro každý kvadratický zbytek~$a$ totiž platí $$ @@ -840,7 +844,7 @@ $$ přičemž poslední rovnost získáme z~Eulerova kriteria. To znamená, že $a^{(p+1)/4}$ je odmocninou z~$a$. -Pro $p = 4\ell+1$ je situace mnohem složitější. Není známý žádný deterministický +Pro $p = 4\ell+1$ není známý žádný deterministický algoritmus pro výpočet odmocnin. Existuje Tonelliho-Shanksův randomizovaný algoritmus, který pracuje v~průměrně polynomiálním čase. Detaily nebudeme potřebovat. @@ -849,18 +853,22 @@ který pracuje v~průměrně polynomiálním čase. Detaily nebudeme potřebovat V~$\Zn$ pro složené~$n$ je situace mnohem složitější. Prozkoumejme nejdřív případ, $n=pq$ pro dvě různá prvočísla $p$ a~$q$. Aby $x^2$ bylo kongruentní s~nějakým~$a$ modulo~$n$, musí s~ním být kongruentní i modulo~$p$ a modulo~$q$. Hledáme tedy dvojici -$(x_1,x_2)$ takovou, že $x_1^2 \equiv_p a$ a $x_2^2 \equiv_q a$. A~podle Čínské věty -o~zbytcích odpovídá každá taková dvojice právě jednomu $x\Zn$. Pokud jsou $a\bmod p$ -i $a\bmod q$ kvadratické zbytky, získáváme celkem 4 různá~$x$. Pokud některé z~nich -není kvadratickým zbytkem, žádné~$x$ neexistuje. Ještě se může stát, že jedno z~nich -vyjde nulové, pak najdeme dvě různá~$x$. +$(x_1,x_2)$ takovou, že $x_1^2 \equiv_p a_1$ a $x_2^2 \equiv_q a_2$, kde +$a_1 = a\bmod p$ a $a_2 = a\bmod q$. +Podle Čínské věty o~zbytcích odpovídá každá taková dvojice právě jedné odmocnině $x\in\Zn$. + +Každé~$a_i$ je buďto~0 (pak existuje právě jedno~$x_i$) +nebo kvadratický zbytek (dvě~$x_i$), +případně kvadratický nezbytek (žádné~$x_i$). +V~závislosti na tom existují 0, 2, nebo~4 dvojice $(x_1,x_2)$, +a~tedy stejný počet odmocnin~$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čí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} +\sectionstar[rmproof]{Rozbor Rabinova-Millerova testu} O~Rabinově-Millerově testu již víme, že prvočíslo vždy prohlásí za~prvočíslo a že složené číslo, které není Carmichaelovo, usvědčí s~pravděpodobností alespoň $1/2$. @@ -872,7 +880,8 @@ Nyní dokážeme, že je to pravda i pro Carmichaelova čísla. Nejprve si přip \proof Uvažujme libovolné $n=p^e$, kde $p$ je prvočíslo a $e>1$. -Zvolíme $a = 1 + p^{e-1}$ a podle binomické věty spočteme $a^p$ (vše počítáme v~$Z^*_n$, kam~$a$ jistě patří): +Zvolíme $a = 1 + p^{e-1}$, což je jistě nesoudělné s~$n$. +Podle binomické věty spočteme $a^p$ (vše počítáme v~$\Zn$, kde je~$a$ invertibilní): $$ a^p \equiv (1+p^{e-1})^p \equiv {p\choose 0}\cdot 1\cdot 1 + {p\choose 1}\cdot 1\cdot p^{e-1} + {p\choose 2}\cdot 1\cdot p^{2(e-1)} + \ldots + {p\choose p}\cdot 1\cdot p^{p(e-1)} \equiv 1 $$ @@ -881,7 +890,7 @@ Proto také $a^n \equiv (a^p)^e \equiv 1$. Tedy $a^{n-1} \equiv a^{-1} \not\equi takže $n$ není Carmichaelovo. \qed -Nyní uvažujme, kdy může Rabinův-Millerův test odpovědět, že číslo je prvočíslem. Stane +Teď uvažujme, kdy může Rabinův-Millerův test odpovědět, že číslo je prvočíslem. Stane se tak buď v~kroku~\itemref{rmallone} (všechna $b_0,\ldots,b_t$ jsou jedničky, což nastane, kdykoliv $b_0\equiv 1$) nebo v~kroku~\itemref{rmmone} (nějaké $b_i\equiv -1$ a $b_{i+1}\equiv\ldots\equiv b_t\equiv 1$). Rozebereme postupně oba případy. @@ -909,8 +918,9 @@ ani $a^m\equiv_n\nobreak 1$. \qed 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, +je $b_0\not\equiv 1$, ale pro všechna~$a\in\Zsn$ je $b_t\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\Zsn$, 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. \lemma{ @@ -947,15 +957,15 @@ tak prvočíslo za~složené. Bude fungovat následovně: \:Pokud pro nějaké~$i$ je $r_i\not\equiv\pm1$, odpovíme \Comp. \:Pokud pro všechna~$i$ je $r_i=1$, odpovíme \Comp. \:Jinak odpovíme \Prime. -\endlist +\endalgo Nejprve si všimneme, že algoritmus běží v~polynomiálním čase. Největší společné dělitele a mocniny modulo~$n$ už polynomiálně umíme počítat, jediný problematický krok je ten první. V~něm ale stačí zkoušet všechny možné exponenty (těch je $\O(\log n)=\O(b)$, jelikož základ je alespoň~$2$) -a pro každý exponent hledat pomocí půlení intervalu odmocninu (opět $\O(b)$ kroků). +a pro každý exponent binárně vyhledávat odmocninu (opět $\O(b)$ kroků). Nyní nahlédněme, jak algoritmus probíhá pro prvočísla. První ani třetí krok prvočíslo neodmítnou, -pátý také ne, jediný problém může nastat v~šestém kroku. Již víme, že $r_i=1$ právě tehdy, má-li $a_i$ druhou odmocninu, +pátý také ne, jediný problém může nastat v~šestém kroku. Podle Eulerova kriteria je $r_i=1$ právě tehdy, má-li $a_i$ druhou odmocninu, a~to nastane s~pravděpodobností $1/2$. Šestý krok tedy odpoví {\csc složené} jen tehdy, když jsou všechna $a_i$ odmocnitelná, pravděpodobnost čehož je $1/2^t$. @@ -972,21 +982,21 @@ obsahuje nejvýše $\vert \Z_n^*\vert/2$ prvků. \proof Podobně jako u~Fermatova testu: Všimneme si, že $S_n$ je podgrupa $\Z_n^*$, takže zbývá dokázat, že je to podgrupa netriviální, -a použít Lagrangeovu větu. Najdeme číslo~$b$, které nebude ležet v~$S_n$. +a použít Lagrangeovu větu. Najdeme číslo~$c$, které nebude ležet v~$S_n$. Nechť $n$ má prvočíselný rozklad $p_1^{k_1}\cdot\ldots\cdot p_s^{k_s}$. Již víme, že $s\ge 2$. Označme $q=p_1^{k_1}$ a $m=n/q$. Jelikož $q\divs n$ i $m\divs n$, musí být pro každý prvek $x\in S_n$ jak $x^{(n-1)/2}\equiv_q \pm1$, tak $x^{(n-1)/2}\equiv_m \pm1$ a znaménka obou zbytků jsou stejná. -Kýžené číslo~$b$ zvolíme tak, aby pro něj platilo -$b\equiv_q a$ a současně $b\equiv_m 1$ (Čínská věta o~zbytcích nám jeho existenci zaručuje, jelikož $q\perp m$). +Kýžené číslo~$c$ zvolíme tak, aby pro něj platilo +$c\equiv_q a$ a současně $c\equiv_m 1$ (Čínská věta o~zbytcích nám jeho existenci zaručuje, jelikož $q\perp m$). Snadno ověříme, že platí: $$\eqalign{ -b^{(n-1)/2} &\equiv_q a^{(n-1)/2} \equiv_q -1, \cr -b^{(n-1)/2} &\equiv_m 1. \cr +c^{(n-1)/2} &\equiv_q a^{(n-1)/2} \equiv_q -1, \cr +c^{(n-1)/2} &\equiv_m 1. \cr }$$ -Takové $b$ ovšem neleží v~$S_n$, protože jak už jsme pozorovali, pro každý prvek z~$S_n$ -jsou zbytky po~dělení $q$ a $m$ stejné a my jsme si~$b$ zvolili tak, aby byly různé. +Takové $c$ ovšem neleží v~$S_n$, protože jak už jsme pozorovali, pro každý prvek z~$S_n$ +jsou zbytky po~dělení $q$ a $m$ stejné, zatímco jsme si~$c$ zvolili tak, aby zbytky byly různé. \qed Náš algoritmus tudíž selže jedině tehdy, když $a_2,\ldots,a_t$ padnou všechna do~$S_n$, diff --git a/tex/adsmac.tex b/tex/adsmac.tex index 0a53e75..786e813 100644 --- a/tex/adsmac.tex +++ b/tex/adsmac.tex @@ -156,7 +156,7 @@ \def\Zp{{\bb Z}_p} \def\Zsp{{\bb Z}^*_p} \def\Zn{{\bb Z}_n} -\def\Zsn{{\bb Z}^*_p} +\def\Zsn{{\bb Z}^*_n} \def\divs{\mathbin\backslash} \def\inv{^{-1}} -- GitLab