Skip to content
Snippets Groups Projects
Commit aef897af authored by Martin Mareš's avatar Martin Mareš
Browse files

Teorie čísel: Korektury

parent 2c20c8a0
No related branches found
No related tags found
No related merge requests found
......@@ -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$\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$$\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$,
......
......@@ -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}}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment