Matematyka dyskretna 1/Wykład 11: Teoria liczb II: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Arek (dyskusja | edycje)
Nie podano opisu zmian
m Zastępowanie tekstu – „,↵</math>” na „</math>,”
 
(Nie pokazano 33 wersji utworzonych przez 5 użytkowników)
Linia 4: Linia 4:
to takie dwie liczby <math>a,b\in\mathbb{Z}</math>,  
to takie dwie liczby <math>a,b\in\mathbb{Z}</math>,  
dla których różnica <math>a-b</math> jest wielokrotnością <math>n</math>.
dla których różnica <math>a-b</math> jest wielokrotnością <math>n</math>.
Fakt ten zapisujemy jako <math>a\ \equiv_{n}b </math>.
Fakt ten zapisujemy jako <math>a\ \equiv_{n}b</math>.
Innymi słowy, <math>a\ \equiv_{n}b </math> jeśli <math>a</math> i <math>b</math> mają te same reszty w dzieleniu przez <math>n</math>.
Innymi słowy, <math>a\ \equiv_{n}b</math> jeśli <math>a</math> i <math>b</math> mają te same reszty w dzieleniu przez <math>n</math>.


{{obserwacja|||
{{obserwacja|11.|obs 11.1|
Dla dowolnych <math>a,b,c</math> oraz <math>n>0</math> zachodzi:
Dla dowolnych <math>a,b,c</math> oraz <math>n>0</math> zachodzi:


* <math>a\ \equiv_{n}a </math>,
* <math>a\ \equiv_{n}a</math>,


* <math>a\ \equiv_{n}b </math> wtedy i tylko wtedy, gdy <math>b\ \equiv_{n}a </math>,
* <math>a\ \equiv_{n}b</math> wtedy i tylko wtedy, gdy <math>b\ \equiv_{n}a</math>,


* jeśli <math>a\ \equiv_{n}b </math> i <math>b\ \equiv_{n}c </math> to <math>a\ \equiv_{n}c </math>.
* jeśli <math>a\ \equiv_{n}b</math> i <math>b\ \equiv_{n}c</math> to <math>a\ \equiv_{n}c</math>.


}}
}}
Linia 25: Linia 25:
a więc jest kongruencją ze względu na te działania.
a więc jest kongruencją ze względu na te działania.


{{obserwacja|||
{{obserwacja|11.2|obs 11.2|
Dla dowolnych <math>a,b,c,d</math> oraz <math>n>0</math> mamy:
Dla dowolnych <math>a,b,c,d</math> oraz <math>n>0</math> mamy:


* jeśli <math>a\ \equiv_{n}b </math> i <math>c\ \equiv_{n}d </math>, to <math>a+c\ \equiv_{n}b+d </math>,
* jeśli <math>a\ \equiv_{n}b</math> i <math>c\ \equiv_{n}d</math>, to <math>a+c\ \equiv_{n}b+d</math>,


* jeśli <math>a\ \equiv_{n}b </math> i <math>c\ \equiv_{n}d </math>, to <math>a-c\ \equiv_{n}b-d </math>,
* jeśli <math>a\ \equiv_{n}b</math> i <math>c\ \equiv_{n}d</math>, to <math>a-c\ \equiv_{n}b-d</math>,


* jeśli <math>a\ \equiv_{n}b </math> i <math>c\ \equiv_{n}d </math>, to <math>ac\ \equiv_{n}bd </math>.
* jeśli <math>a\ \equiv_{n}b</math> i <math>c\ \equiv_{n}d</math>, to <math>ac\ \equiv_{n}bd</math>.


}}
}}
Linia 52: Linia 52:
na zbiorze tych reszt <math>{\left\{ {0,1,2,\ldots,n-1} \right\} }</math> i pisać np.:
na zbiorze tych reszt <math>{\left\{ {0,1,2,\ldots,n-1} \right\} }</math> i pisać np.:


* <math>3+5\ \equiv_{6}2 </math>,
* <math>3+5\ \equiv_{6}2</math>,


* <math>3-5\ \equiv_{6}4 </math>,
* <math>3-5\ \equiv_{6}4</math>,


* <math>3 \cdot 5\ \equiv_{6}3 </math>.
* <math>3 \cdot 5\ \equiv_{6}3</math>.


Tak więc, dla <math>n>0</math> możemy zidentyfikować zbiór ilorazowy <math>\mathbb{Z}/\equiv_n</math>  
Tak więc, dla <math>n>0</math> możemy zidentyfikować zbiór ilorazowy <math>\mathbb{Z}/\equiv_n</math>  
Linia 68: Linia 68:
Okazuje się, że w równości modulo <math>n</math> możemy skracać czynniki względnie pierwsze z <math>n</math>.
Okazuje się, że w równości modulo <math>n</math> możemy skracać czynniki względnie pierwsze z <math>n</math>.


{{obserwacja|Reguła skracania||
{{obserwacja|11.3 [Reguła skracania]|obs 11.3|
 
Dla <math>n>0</math>, jeśli <math>ad\ \equiv_{n}bd</math> i <math>d\perp n</math>, to <math>a\ \equiv_{n}b</math>.
Dla <math>n>0</math>, jeśli <math>ad\ \equiv_{n}bd </math> i <math>d\perp n</math>, to <math>a\ \equiv_{n}b </math>.
}}
}}


{{dowod|||
{{dowod|||
Ponieważ <math>\mbox{\sf NWD}(d,n)=1</math>,  
Ponieważ <math>\mathsf{ NWD}(d,n)=1</math>,  
rozszerzony algorytm Euklidesa gwarantuje istnienie <math>x,y\in \mathbb{Z}</math> takich,  
rozszerzony algorytm Euklidesa gwarantuje istnienie <math>x,y\in \mathbb{Z}</math> takich,  
że <math>xd+yn=1</math>, czyli <math>dx\ \equiv_{n}1 </math>.  
że <math>xd+yn=1</math>, czyli <math>dx\ \equiv_{n}1</math>.  
Mnożąc teraz obie strony <math>ad\ \equiv_{n}bd </math> przez <math>x</math>,  
Mnożąc teraz obie strony <math>ad\ \equiv_{n}bd</math> przez <math>x</math>,  
otrzymujemy <math>adx\ \equiv_{n}bdx </math>, czyli <math>a=a1 \equiv_n adx \equiv_n bdx \equiv_n b1=b</math>.
otrzymujemy <math>adx\ \equiv_{n}bdx</math>, czyli <math>a=a1 \equiv_n adx \equiv_n bdx \equiv_n b1=b</math>.
}}
}}


Linia 93: Linia 92:
To nic innego, jak wymaganie, by <math>n</math> było liczbą pierwszą.
To nic innego, jak wymaganie, by <math>n</math> było liczbą pierwszą.


{{obserwacja|||
{{obserwacja|11.4|obs 11.4|
Pierścień <math>\mathbb{Z}_n=({\left\{ {0,\ldots n-1} \right\} },+,\cdot)</math> jest ciałem, wtedy i tylko wtedy, gdy
Pierścień <math>\mathbb{Z}_n=({\left\{ {0,\ldots n-1} \right\} },+,\cdot)</math> jest ciałem, wtedy i tylko wtedy, gdy
<math>n</math> jest liczba pierwszą.
<math>n</math> jest liczba pierwszą.
Linia 105: Linia 104:
postaci <math>ax\equiv_n b</math> w liczbach całkowitych <math>x</math>, gdzie <math>a,b\in \mathbb{Z}</math> oraz <math>a\neq 0</math>.
postaci <math>ax\equiv_n b</math> w liczbach całkowitych <math>x</math>, gdzie <math>a,b\in \mathbb{Z}</math> oraz <math>a\neq 0</math>.


{{obserwacja|||
{{obserwacja|11.5|obs 11.5|
Dla <math>a,b \in \mathbb{Z}, a\neq 0</math> rozwiązania równania modularnego z jedną niewiadomą <math>x</math>:
Dla <math>a,b \in \mathbb{Z}, a\neq 0</math> rozwiązania równania modularnego z jedną niewiadomą <math>x</math>:


<center><math>ax\ \equiv_{n}b ,
 
<center><math>ax\ \equiv_{n}b
</math></center>
</math></center>


zależą od wielkości <math>\mbox{\sf NWD}(a,n)=1</math> w następujący sposób:


* jeśli <math>\mbox{\sf NWD}(a,n)=1</math>,  
zależą od wielkości <math>\mathsf{ NWD}(a,n)=1</math> w następujący sposób:
 
* jeśli <math>\mathsf{ NWD}(a,n)=1</math>,  
to istnieje nieskończenie wiele rozwiązań;  
to istnieje nieskończenie wiele rozwiązań;  
wszystkie one są postaci <math>x=x_0+kn</math>,  
wszystkie one są postaci <math>x=x_0+kn</math>,  
gdzie <math>0\leq x_0<n</math> jest jakimś rozwiązaniem, a <math>k\in\mathbb{Z}</math>,
gdzie <math>0\leq x_0<n</math> jest jakimś rozwiązaniem, a <math>k\in\mathbb{Z}</math>,


* jeśli <math>\mbox{\sf NWD}(a,n)=d>1</math>,  
* jeśli <math>\mathsf{ NWD}(a,n)=d>1</math>,  
to równanie ma rozwiązanie wtedy i tylko wtedy, gdy również <math>d|b</math>.  
to równanie ma rozwiązanie wtedy i tylko wtedy, gdy również <math>d|b</math>.  
W tym przypadku rozwiązania równania <math>ax\ \equiv_{n}b </math>  
W tym przypadku rozwiązania równania <math>ax\ \equiv_{n}b</math>  
pokrywają się z rozwiązaniami równania <math>\frac{a}{d}x\ \equiv_{\frac{n}{d}}\frac{b}{d} </math>.
pokrywają się z rozwiązaniami równania <math>\frac{a}{d}x\ \equiv_{\frac{n}{d}}\frac{b}{d}</math>.


Ponadto,  
Ponadto,  


* ponadto, jeśli <math>0\leq a,b<n</math>, to rozwiązanie <math>0\leq x_0 <n</math>  
* ponadto, jeśli <math>0\leq a,b<n</math>, to rozwiązanie <math>0\leq x_0 <n</math>  
równania <math>ax\ \equiv_{n}b </math>, lub jego brak, można wskazać  
równania <math>ax\ \equiv_{n}b</math>, lub jego brak, można wskazać  
wykonując <math>O(lg^3{n})</math> operacji bitowych.
wykonując <math>O(lg^3{n})</math> operacji bitowych.


Linia 134: Linia 135:
Zauważmy najpierw, że jeśli <math>a',b'</math> są resztami z dzielenia  
Zauważmy najpierw, że jeśli <math>a',b'</math> są resztami z dzielenia  
odpowiednio <math>a</math> i <math>b</math> przez <math>n</math>,  
odpowiednio <math>a</math> i <math>b</math> przez <math>n</math>,  
to rozwiązania równań <math>ax\ \equiv_{n}b </math> i <math>a'x\ \equiv_{n}b' </math> są takie same.  
to rozwiązania równań <math>ax\ \equiv_{n}b</math> i <math>a'x\ \equiv_{n}b'</math> są takie same.  
Istotnie, wynika to natychmiast z tego, że <math>a'x\ \equiv_{n}ax </math> oraz <math>b'\ \equiv_{n}b </math>.
Istotnie, wynika to natychmiast z tego, że <math>a'x\ \equiv_{n}ax</math> oraz <math>b'\ \equiv_{n}b</math>.
Możemy więc przyjąć, że <math>0\leq a,b<n</math>.  
Możemy więc przyjąć, że <math>0\leq a,b<n</math>.  
Ponadto odnotujmy, że z tych samych powodów,  
Ponadto odnotujmy, że z tych samych powodów,  
Linia 141: Linia 142:
to spełnia je również każda liczba postaci <math>x_0+kn</math>, gdzie <math>k\in\mathbb{Z}</math>.
to spełnia je również każda liczba postaci <math>x_0+kn</math>, gdzie <math>k\in\mathbb{Z}</math>.


Załóżmy najpierw, że <math>\mbox{\sf NWD}(a,n)=1</math>.  
Załóżmy najpierw, że <math>\mathsf{ NWD}(a,n)=1</math>.  
Rozszerzony algorytm Euklidesa gwarantuje istnienie <math>y,z</math> takich,  
Rozszerzony algorytm Euklidesa gwarantuje istnienie <math>y,z</math> takich,  
że <math>1\ \equiv_{n}ya+zn \equiv_n ya</math>.  
że <math>1\ \equiv_{n}ya+zn \equiv_n ya</math>.  
Linia 148: Linia 149:
Pozostaje pokazać, że wszystkie rozwiązania są takiej właśnie postaci.  
Pozostaje pokazać, że wszystkie rozwiązania są takiej właśnie postaci.  
Niech więc <math>ax\equiv_n b\equiv_n ax_0</math>.  
Niech więc <math>ax\equiv_n b\equiv_n ax_0</math>.  
Ponieważ <math>a\perp n</math>, to <math>a</math> możemy skrócić otrzymując <math>x\ \equiv_{n}x_0 </math>,  
Ponieważ <math>a\perp n</math>, to <math>a</math> możemy skrócić otrzymując <math>x\ \equiv_{n}x_0</math>,  
co implikuje że <math>x=x_0+kn</math>, dla pewnej liczby całkowitej <math>k</math>.
co implikuje że <math>x=x_0+kn</math>, dla pewnej liczby całkowitej <math>k</math>.


Niech teraz <math>\mbox{\sf NWD}(a,n)=d>1</math>.  
Niech teraz <math>\mathsf{ NWD}(a,n)=d>1</math>.  
Najpierw pokażemy, że jeśli równanie <math>ax\ \equiv_{n}b </math> ma rozwiązanie, to <math>d|b</math>.  
Najpierw pokażemy, że jeśli równanie <math>ax\ \equiv_{n}b</math> ma rozwiązanie, to <math>d|b</math>.  
Rzeczywiście, jeśli <math>ax_0\ \equiv_{n}b </math> dla pewnego <math>x_0</math>, to <math>n|ax-b</math>,  
Rzeczywiście, jeśli <math>ax_0\ \equiv_{n}b</math> dla pewnego <math>x_0</math>, to <math>n|ax-b</math>,  
a więc i <math>d|ax-b</math>.  
a więc i <math>d|ax-b</math>.  
Ale <math>d|a</math>, więc <math>d|b</math>.  
Ale <math>d|a</math>, więc <math>d|b</math>.  
Na odwrót, gdy <math>d|b</math>, to liczby <math>a,b,n</math> są podzielne przez <math>n</math>.
Na odwrót, gdy <math>d|b</math>, to liczby <math>a,b,n</math> są podzielne przez <math>n</math>.
Niech więc <math>a'=a/d</math>, <math>b'=b/d</math> i <math>n'=n/d</math>.  
Niech więc <math>a'=a/d</math>, <math>b'=b/d</math> i <math>n'=n/d</math>.  
Wtedy <math>\mbox{\sf NWD}(a',n')=1</math> i, na mocy pierwszego punktu,  
Wtedy <math>\mathsf{ NWD}(a',n')=1</math> i, na mocy pierwszego punktu,  
równanie <math>a'x\ \equiv_{n'}b' </math> ma nieskończenie wiele rozwiązań.  
równanie <math>a'x\ \equiv_{n'}b'</math> ma nieskończenie wiele rozwiązań.  
Pozostaje pokazać, że są to te same rozwiązania, co dla równania <math>ax\ \equiv_{n}b </math>.
Pozostaje pokazać, że są to te same rozwiązania, co dla równania <math>ax\ \equiv_{n}b</math>.
Niech więc <math>n'|a'x-b'</math>. Wtedy <math>n=dn'|d(a'x-b') = ax-b</math>.  
Niech więc <math>n'|a'x-b'</math>. Wtedy <math>n=dn'|d(a'x-b') = ax-b</math>.  
Gdy zaś <math>ax\ \equiv_{n}b </math>, to <math>ax=b+kn</math> dla pewnego <math>k\in\mathbb{Z}</math>.
Gdy zaś <math>ax\ \equiv_{n}b</math>, to <math>ax=b+kn</math> dla pewnego <math>k\in\mathbb{Z}</math>.
A zatem <math>da'x=db'+kdn'</math> i, po wydzieleniu przez <math>d>1</math>, dostajemy  
A zatem <math>da'x=db'+kdn'</math> i, po wydzieleniu przez <math>d>1</math>, dostajemy  
<math>a'x=b'+kn'</math>, czyli <math>a'x\ \equiv_{n'}b' </math>.
<math>a'x=b'+kn'</math>, czyli <math>a'x\ \equiv_{n'}b'</math>.


Na podstawie dowodu poprzednich dwu punktów wiemy więc,  
Na podstawie dowodu poprzednich dwu punktów wiemy więc,  
że by rozwiązać równanie <math>ax\ \equiv_{n}b </math> wystarczy:
że by rozwiązać równanie <math>ax\ \equiv_{n}b</math> wystarczy:


* policzyć <math>d:=\mbox{\sf NWD}(a,n)</math> oraz współczynniki <math>y,z</math> takie, że <math>ya+zn=d</math>,
* policzyć <math>d:=\mathsf{ NWD}(a,n)</math> oraz współczynniki <math>y,z</math> takie, że <math>ya+zn=d</math>,


* jeśli <math>d=1</math>, to <math>x_0 =yb \mbox{ {\sf mod} } n </math> jest poszukiwanym rozwiązaniem,
* jeśli <math>d=1</math>, to <math>x_0 =yb \mathsf{ mod} n</math> jest poszukiwanym rozwiązaniem,


* jeśli <math>d>1</math> i <math>d\not| b</math>, to równanie nie posiada rozwiązań,
* jeśli <math>d>1</math> i <math>d\not| b</math>, to równanie nie posiada rozwiązań,
Linia 185: Linia 186:
}}
}}


{{wniosek|||
{{wniosek|11.6|wn 11.6|
Jeśli <math>p</math> jest liczbą pierwszą, to równania postaci <math>ax\ \equiv_{p}b </math>  
Jeśli <math>p</math> jest liczbą pierwszą, to równania postaci <math>ax\ \equiv_{p}b</math>  
dla dowolnych <math>0<a<p</math> i <math>0\leq b<p</math> zawsze mają rozwiązanie  
dla dowolnych <math>0<a<p</math> i <math>0\leq b<p</math> zawsze mają rozwiązanie  
i można je znaleźć wykonując <math>O(lg^3{p})</math> operacji bitowych.
i można je znaleźć wykonując <math>O(lg^3{p})</math> operacji bitowych.
Linia 194: Linia 195:
Rozwiążemy równanie <math>3x\equiv_7 4</math>.
Rozwiążemy równanie <math>3x\equiv_7 4</math>.


* <math>\mbox{\sf NWD}(3,7)=1</math>, czyli równanie ma nieskończenie wiele rozwiązań,
* <math>\mathsf{ NWD}(3,7)=1</math>, czyli równanie ma nieskończenie wiele rozwiązań,


* <math>1=1\cdot7-2\cdot3</math>,  
* <math>1=1\cdot7-2\cdot3</math>,  
Linia 201: Linia 202:
A następnie równanie <math>3x\equiv_{12}4</math>.
A następnie równanie <math>3x\equiv_{12}4</math>.


* <math>\mbox{\sf NWD}(3,12)=3</math>, ale <math>3\not| 4</math>, czyli równanie nie ma rozwiązania.
* <math>\mathsf{ NWD}(3,12)=3</math>, ale <math>3\not| 4</math>, czyli równanie nie ma rozwiązania.


Wreszcie rozważmy równanie <math>9x\equiv_{21}12</math>.
Wreszcie rozważmy równanie <math>9x\equiv_{21}12</math>.


* <math>\mbox{\sf NWD}(9,21)=3</math> oraz <math>3|12</math>, czyli równanie ma nieskończenie wiele rozwiązań,
* <math>\mathsf{ NWD}(9,21)=3</math> oraz <math>3|12</math>, czyli równanie ma nieskończenie wiele rozwiązań,


* <math>3=1\cdot21-2\cdot9</math>,  
* <math>3=1\cdot21-2\cdot9</math>,  
Linia 216: Linia 217:
wykorzystując następującą własność.
wykorzystując następującą własność.


{{obserwacja|||
{{obserwacja|11.7|obs 11.7|
 
Niech <math>a,b,m,n\in\mathbb{Z}</math>, gdzie <math>m,n>0</math> i <math>m\perp n</math>. Wtedy  
Niech <math>a,b,m,n\in\mathbb{Z}</math>, gdzie <math>m,n>0</math> i <math>m\perp n</math>. Wtedy  
<math>a\ \equiv_{mn}b </math> jest równoważne temu, że równocześnie  
<math>a\ \equiv_{mn}b</math> jest równoważne temu, że równocześnie  
<math>a\ \equiv_{m}b </math> i <math>a\ \equiv_{n}b </math>.
<math>a\ \equiv_{m}b</math> i <math>a\ \equiv_{n}b</math>.
}}
}}


{{dowod|||
{{dowod|||
Jeśli <math>a\ \equiv_{mn}b </math>, to <math>mn|a-b</math>. A więc oczywiście <math>m|a-b</math> i <math>n|a-b</math>,  
Jeśli <math>a\ \equiv_{mn}b</math>, to <math>mn|a-b</math>. A więc oczywiście <math>m|a-b</math> i <math>n|a-b</math>,  
co jest równoważne z <math>a\ \equiv_{m}b </math> i <math>a\ \equiv_{n}b </math>.  
co jest równoważne z <math>a\ \equiv_{m}b</math> i <math>a\ \equiv_{n}b</math>.  
Dla dowodu implikacji odwrotnej, że jest ona trywialna dla <math>a=b</math> i wobec tego  
Dla dowodu implikacji odwrotnej, że jest ona trywialna dla <math>a=b</math> i wobec tego  
przyjmijmy (bez straty ogólności), że <math>a>b</math>.
przyjmijmy (bez straty ogólności), że <math>a>b</math>.
Linia 232: Linia 232:
Natomiast rozkład <math>a-b</math> musi zawierać wszystkie liczby pierwsze  
Natomiast rozkład <math>a-b</math> musi zawierać wszystkie liczby pierwsze  
z rozkładów <math>m</math> i <math>n</math> w odpowiednio wysokich potęgach.  
z rozkładów <math>m</math> i <math>n</math> w odpowiednio wysokich potęgach.  
To dowodzi, iż <math>mn|a-b</math>, czyli <math>a\ \equiv_{mn}b </math>.
To dowodzi, iż <math>mn|a-b</math>, czyli <math>a\ \equiv_{mn}b</math>.
}}
}}


Linia 240: Linia 240:
nie mylić z Sun Tzu, myślicielem, filozofem, autorem ''Sztuki wojny'').
nie mylić z Sun Tzu, myślicielem, filozofem, autorem ''Sztuki wojny'').


{{twierdzenie|Chińskie twierdzenie o resztach||
{{twierdzenie|11.7 [Chińskie twierdzenie o resztach]|tw 11.7|
 
Niech <math>n_1,\ldots,n_k\in\mathbb{N}-{\left\{ {0} \right\} }</math> będą parami względnie pierwsze,  
Niech <math>n_1,\ldots,n_k\in\mathbb{N}-{\left\{ {0} \right\} }</math> będą parami względnie pierwsze,  
tzn. <math>n_i\perp n_j</math> dla <math>i\neq j</math>.  
tzn. <math>n_i\perp n_j</math> dla <math>i\neq j</math>.  
Linia 247: Linia 246:
istnieje dokładnie jedna liczba <math>0\leq x<n_1\cdot\ldots\cdot n_k</math> taka, że:
istnieje dokładnie jedna liczba <math>0\leq x<n_1\cdot\ldots\cdot n_k</math> taka, że:


<center><math>\aligned x&\equiv_{n_1}&a_1,\nonumber \\
 
x&\equiv_{n_2}&a_2,\nonumber \\
<center><math>\begin{align} x&\equiv_{n_1}&a_1, \\
x&\equiv_{n_2}&a_2, \\
&\vdots&          \\
&\vdots&          \\
x&\equiv_{n_k}&a_k.\nonumber
x&\equiv_{n_k}&a_k.
\endaligned</math></center>
\end{align}</math></center>
 


}}
}}
Linia 262: Linia 263:
Niech teraz  <math>0\leq a<b<N</math>. Gdyby <math>\overline{a}=\overline{b}</math>, to
Niech teraz  <math>0\leq a<b<N</math>. Gdyby <math>\overline{a}=\overline{b}</math>, to


<center><math>\aligned a&\equiv_{n_1}&b,\\
 
<center><math>\begin{align} a&\equiv_{n_1}&b,\\
a&\equiv_{n_2}&b,\\
a&\equiv_{n_2}&b,\\
&\vdots&\\
&\vdots&\\
a&\equiv_{n_k}&b.
a&\equiv_{n_k}&b.
\endaligned</math></center>
\end{align}</math></center>


Z drugiej strony <math>n_1\ldots n_i \perp n_{i+1}</math>, więc stosując wielokrotnie  
 
Obserwację [[##obserwacja potrzebna do chinskiego twierdzenia o resztach|Uzupelnic obserwacja potrzebna do chinskiego twierdzenia o resztach|]]  
Z drugiej strony <math>n_1\ldots n_i \perp n_{i+1}</math>, więc stosując wielokrotnie
otrzymujemy <math>i\ \equiv_{N}j </math>, czyli <math>N|j-i</math>, co jest niemożliwe wobec <math>0<j-i<N</math>.  
[[#obs_11.7|Obserwację 11.7]]  
otrzymujemy <math>i\ \equiv_{N}j</math>, czyli <math>N|j-i</math>, co jest niemożliwe wobec <math>0<j-i<N</math>.  
Sprzeczność ta pokazuje, że liczby ze zbioru <math>{\left\{ {0,1,\ldots,N-1} \right\} }</math>  
Sprzeczność ta pokazuje, że liczby ze zbioru <math>{\left\{ {0,1,\ldots,N-1} \right\} }</math>  
mają różne ciągi reszt.
mają różne ciągi reszt.
Linia 282: Linia 285:


Chińskie Twierdzenie o Resztach podaje warunki wystarczające  
Chińskie Twierdzenie o Resztach podaje warunki wystarczające  
na istnienie rozwiązania układu równań modularnych ([[##chrt|Uzupelnic chrt|]]).
na istnienie rozwiązania układu równań modularnych (1).
Nie podaje jednak metody jego uzyskania.
Nie podaje jednak metody jego uzyskania.


Linia 288: Linia 291:


Niech <math>N_j=N/n_j</math>, czyli <math>N_j</math> jest iloczynem wszystkich <math>n_i</math> poza <math>n_j</math>.  
Niech <math>N_j=N/n_j</math>, czyli <math>N_j</math> jest iloczynem wszystkich <math>n_i</math> poza <math>n_j</math>.  
Oczywiście, <math>\mbox{\sf NWD}(n_i,N_i)=1</math>.  
Oczywiście, <math>\mathsf{ NWD}(n_i,N_i)=1</math>.  
Rozszerzony algorytm Euklidesa pozwala więc znaleźć liczby <math>x_i</math> takie,  
Rozszerzony algorytm Euklidesa pozwala więc znaleźć liczby <math>x_i</math> takie,  
że <math>N_ix_i\ \equiv_{n_i}1 </math>.  
że <math>N_ix_i\ \equiv_{n_i}1</math>.  
Połóżmy  
Połóżmy  


<center><math>x=\sum_{i=1}^k a_i x_i N_i.
 
</math></center>
<center><math>x=\sum_{i=1}^k a_i x_i N_i</math></center>
 


Wtedy <math>n_i</math> dzieli wszystkie czynniki sumy poza <math>i</math>-tym,  
Wtedy <math>n_i</math> dzieli wszystkie czynniki sumy poza <math>i</math>-tym,  
Linia 300: Linia 304:
A więc, dla dowolnego <math>i</math> mamy:
A więc, dla dowolnego <math>i</math> mamy:


<center><math>x\equiv_{n_i}a_ix_iN_i\equiv_{n_i} a_i \cdot 1 =a_i.
</math></center>


To oznacza, że <math>x</math> jest rozwiązaniem układu równań modularnych ([[##chrt|Uzupelnic chrt|]]).
<center><math>x\equiv_{n_i}a_ix_iN_i\equiv_{n_i} a_i \cdot 1 =a_i</math></center>
 
 
To oznacza, że <math>x</math> jest rozwiązaniem układu równań modularnych (1).


Oszacujmy czas działania tego algorytmu.
Oszacujmy czas działania tego algorytmu.
Linia 310: Linia 315:
Kroki algorytmu można wykonać kolejno w czasie:
Kroki algorytmu można wykonać kolejno w czasie:


* <math>O(kl)</math> na wyliczenie wszystkich iloczynów postaci <math>N_i</math>  
* <math>O(kl)</math> na wyliczenie wszystkich iloczynów postaci <math>N_i</math> oraz całego iloczynu <math>N</math>,  
oraz całego iloczynu <math>N</math>,  


* <math>O(kl^3)</math> na wyliczenie kolejnych współczynników <math>x_i</math>, czyli  
* <math>O(kl^3)</math> na wyliczenie kolejnych współczynników <math>x_i</math>, czyli <math>k</math>-krotną aplikację rozszerzonego algorytmu Euklidesa dla liczb <math>n_i, N_i\leq N</math>,
<math>k</math>-krotną aplikację rozszerzonego algorytmu Euklidesa dla liczb <math>n_i, N_i\leq N</math>,


* <math>O(kl^2)</math> na obliczenie <math>x</math>, czyli <math>O(k)</math> mnożeń i dodawań.
* <math>O(kl^2)</math> na obliczenie <math>x</math>, czyli <math>O(k)</math> mnożeń i dodawań.
Linia 323: Linia 326:
Rozważmy układ równań:
Rozważmy układ równań:


<center><math>\aligned x&\equiv_3& 2,\\
 
<center><math>\begin{align} x&\equiv_3& 2,\\
x&\equiv_{10}& 7,\\
x&\equiv_{10}& 7,\\
x&\equiv_{11}& 10,\\
x&\equiv_{11}& 10,\\
x&\equiv_7& 1.
x&\equiv_7& 1.
\endaligned</math></center>
\end{align}</math></center>
 


* <math>\mbox{\sf NWD}(3,10)=\mbox{\sf NWD}(3,11)=\mbox{\sf NWD}(3,7)=\mbox{\sf NWD}(10,11)=\mbox{\sf NWD}(10,7)=\mbox{\sf NWD}(11,7)=1</math>, czyli możemy zaaplikować Chińskie Twierdzenie o Resztach,
* <math>\mathsf{ NWD}(3,10)=\mathsf{ NWD}(3,11)=\mathsf{ NWD}(3,7)=\mathsf{ NWD}(10,11)=\mathsf{ NWD}(10,7)=\mathsf{ NWD}(11,7)=1</math>,  
czyli możemy zaaplikować Chińskie Twierdzenie o Resztach,


* <math>N=3\cdot7\cdot10\cdot11=2310</math>,
* <math>N=3\cdot7\cdot10\cdot11=2310</math>,
Linia 344: Linia 350:
otrzymując <math>x_1,\ldots,x_4</math>:
otrzymując <math>x_1,\ldots,x_4</math>:


* <math>\mbox{\sf NWD}(3,770)=1=257\cdot3-1\cdot770</math>, <math>x_1=-1\equiv_3 2</math>,
* <math>\mathsf{ NWD}(3,770)=1=257\cdot3-1\cdot770</math>, <math>x_1=-1\equiv_3 2</math>,


* <math>\mbox{\sf NWD}(10,231)=1=-23\cdot10+1\cdot231</math>, <math>x_2=1</math>,
* <math>\mathsf{ NWD}(10,231)=1=-23\cdot10+1\cdot231</math>, <math>x_2=1</math>,


* <math>\mbox{\sf NWD}(11,210)=1=-19\cdot11+1\cdot210</math>, <math>x_3=1</math>,
* <math>\mathsf{ NWD}(11,210)=1=-19\cdot11+1\cdot210</math>, <math>x_3=1</math>,


* <math>\mbox{\sf NWD}(7,330)=1=-47\cdot7+1\cdot330</math>, <math>x_4=1</math>.
* <math>\mathsf{ NWD}(7,330)=1=-47\cdot7+1\cdot330</math>, <math>x_4=1</math>.


Pozostaje policzyć <math>x</math>:
Pozostaje policzyć <math>x</math>:


<center><math>\aligned x&=2\cdot2\cdot770+7\cdot1\cdot231+10\cdot1\cdot210+1\cdot1\cdot330\\
 
<center><math>\begin{align} x&=2\cdot2\cdot770+7\cdot1\cdot231+10\cdot1\cdot210+1\cdot1\cdot330\\
&=3080+1617+2100+330\\
&=3080+1617+2100+330\\
&=7127\equiv_{2310} 197.
&=7127\equiv_{2310} 197.
\endaligned</math></center>
\end{align}</math></center>
 


A więc <math>197</math> jest najmniejszym dodatnim rozwiązaniem naszego układu równości.
A więc <math>197</math> jest najmniejszym dodatnim rozwiązaniem naszego układu równości.
Linia 365: Linia 373:
Rozważmy jeszcze jeden układ równań:
Rozważmy jeszcze jeden układ równań:


<center><math>\aligned x&\equiv_2&0,\\
 
<center><math>\begin{align} x&\equiv_2&0,\\
x&\equiv_{13}&12,\\
x&\equiv_{13}&12,\\
x&\equiv_{15}&2.
x&\equiv_{15}&2.
\endaligned</math></center>
\end{align}</math></center>


* <math>\mbox{\sf NWD}(2,13)=\mbox{\sf NWD}(2,15)=\mbox{\sf NWD}(13,15)=1</math>,  
* <math>\mathsf{ NWD}(2,13)=\mathsf{ NWD}(2,15)=\mathsf{ NWD}(13,15)=1</math>,  
czyli możemy zaaplikować Chińskie Twierdzenie o Resztach,
czyli możemy zaaplikować Chińskie Twierdzenie o Resztach,


Linia 381: Linia 390:
* <math>N_3=\frac{390}{15}=26</math>,
* <math>N_3=\frac{390}{15}=26</math>,


* <math>\mbox{\sf NWD}(2,195)=1=-97\cdot2+1\cdot195</math>, <math>x_1=1</math>,
* <math>\mathsf{ NWD}(2,195)=1=-97\cdot2+1\cdot195</math>, <math>x_1=1</math>,


* <math>\mbox{\sf NWD}(13,30)=1=7\cdot13-3\cdot30</math>, <math>x_2=-3\equiv_{13} 10</math>,
* <math>\mathsf{ NWD}(13,30)=1=7\cdot13-3\cdot30</math>, <math>x_2=-3\equiv_{13} 10</math>,


* <math>\mbox{\sf NWD}(15,26)=1=7\cdot15-4\cdot26</math>, <math>x_3=-4\equiv_{15}11</math>.
* <math>\mathsf{ NWD}(15,26)=1=7\cdot15-4\cdot26</math>, <math>x_3=-4\equiv_{15}11</math>.


Pozostaje nam obliczenie <math>x</math>:
Pozostaje nam obliczenie <math>x</math>:


<center><math>\aligned x&=0\cdot1\cdot195+12\cdot10\cdot30+2\cdot26\cdot11=4172\equiv_{390}=272.
 
\endaligned</math></center>
<center><math>\begin{align} x&=0\cdot1\cdot195+12\cdot10\cdot30+2\cdot26\cdot11=4172\equiv_{390}=272.
\end{align}</math></center>
 


Zatem <math>272</math> jest najmniejszym dodatnim rozwiązaniem naszego układu równań.
Zatem <math>272</math> jest najmniejszym dodatnim rozwiązaniem naszego układu równań.
Linia 397: Linia 408:
==Potęgowanie modularne==
==Potęgowanie modularne==


===Potęgowanie modularne.===
'''Potęgowanie modularne.''' Naszym celem jest policzenie
 


Naszym celem jest policzenie
<center><math>a^b \mathsf{ mod} n </math></center>


<center><math>a^b \mbox{ {\sf mod} } n .
</math></center>


Oczywiście, możemy założyć, że <math>0\leq a< n</math>,  
Oczywiście, możemy założyć, że <math>0\leq a< n</math>,  
bo inaczej najpierw można policzyć resztę <math>a'</math> z dzielenia <math>a</math> przez <math>n</math>,  
bo inaczej najpierw można policzyć resztę <math>a'</math> z dzielenia <math>a</math> przez <math>n</math>,  
a dopiero potem <math>(a')^b \mbox{ {\sf mod} } n </math>, jako że <math>(a')^b \mbox{ {\sf mod} } n =a^b \mbox{ {\sf mod} } n </math>.
a dopiero potem <math>(a')^b \mathsf{ mod} n</math>, jako że <math>(a')^b \mathsf{ mod} n =a^b \mathsf{ mod} n</math>.
Zauważmy, że w przeciwieństwie do zwykłego potęgowania  
Zauważmy, że w przeciwieństwie do zwykłego potęgowania  
wynik nigdy nie przekracza <math>n</math>, czyli nie rośnie wykładniczo w stosunku do <math>a</math>.
wynik nigdy nie przekracza <math>n</math>, czyli nie rośnie wykładniczo w stosunku do <math>a</math>.
Linia 412: Linia 422:
Dla rozgrzewki przeanalizujmy najpierw naiwny sposób liczenia potęgi modulo:
Dla rozgrzewki przeanalizujmy najpierw naiwny sposób liczenia potęgi modulo:


* Naiwne potęgowanie modulo.  
* Naiwne potęgowanie modulo. Wymnóż <math>a</math> przez siebie <math>b</math>-krotnie, po każdym mnożeniu weź resztę modulo <math>n</math>. Branie reszty po każdym mnożeniu, utrzymuje tymczasowy iloczyn w zbiorze <math>{\left\{ {0,\ldots,n-1} \right\} }</math>. Zatem wykonywanych jest <math>b</math> mnożeń liczb <math>O(\log{n})</math>-bitowych, czyli wykonywanych jest <math>O(b\log^2{n})</math> operacji bitowych. Jest to zatem algorytm działający w czasie wykładniczym względem rozmiaru wejścia <math>O(\log{b}+\log{n})</math>.
Wymnóż <math>a</math> przez siebie <math>b</math>-krotnie, po każdym mnożeniu weź resztę modulo <math>n</math>.  
Branie reszty po każdym mnożeniu, utrzymuje tymczasowy iloczyn  
w zbiorze <math>{\left\{ {0,\ldots,n-1} \right\} }</math>.  
Zatem wykonywanych jest <math>b</math> mnożeń liczb <math>O(\log{n})</math>-bitowych,  
czyli wykonywanych jest <math>O(b\log^2{n})</math> operacji bitowych.  
Jest to zatem algorytm działający w czasie wykładniczym  
względem rozmiaru wejścia <math>O(\log{b}+\log{n})</math>.


* Szybkie potęgowanie modulo.  
* Szybkie potęgowanie modulo. Niech <math>b=(b_{k-1}\ldots b_0)_2</math> będzie binarnym zapisem liczby <math>b</math>. Zauważmy, że <math>a^b \mathsf{ mod} n =\prod_{i=0}^{k-1}a^{b_i2^i} \mathsf{ mod} n</math>.
Niech <math>b=(b_{k-1}\ldots b_0)_2</math> będzie binarnym zapisem liczby <math>b</math>.  
Policzmy zatem w następujacy sposób kolejne potęgi <math>a</math> występujące w iloczynie:
Zauważmy, że <math>a^b \mbox{ {\sf mod} } n =\prod_{i=0}^{k-1}a^{b_i2^i} \mbox{ {\sf mod} } n </math>. Policzmy zatem w następujacy sposób kolejne potęgi <math>a</math> występujące w iloczynie:


<center><math>\aligned a\cdot a \mbox{ {\sf mod} } n &\equiv_n&a^2 \mbox{ {\sf mod} } n ,\\
 
(a^2 \mbox{ {\sf mod} } n )\cdot(a^2 \mbox{ {\sf mod} } n )&\equiv_n&a^4 \mbox{ {\sf mod} } n ,\\
<center><math>\begin{align} a\cdot a \mathsf{ mod} n &\equiv_n&a^2 \mathsf{ mod} n ,\\
(a^2 \mathsf{ mod} n )\cdot(a^2 \mathsf{ mod} n )&\equiv_n&a^4 \mathsf{ mod} n ,\\
&\ldots&\\
&\ldots&\\
(a^{2^{k-2}} \mbox{ {\sf mod} } n )\cdot(a^{2^{k-2}} \mbox{ {\sf mod} } n )&\equiv_n&a^{2^{k-1}} \mbox{ {\sf mod} } n .
(a^{2^{k-2}} \mathsf{ mod} n )\cdot(a^{2^{k-2}} \mathsf{ mod} n )&\equiv_n&a^{2^{k-1}} \mathsf{ mod} n .
\endaligned</math></center>
\end{align}</math></center>
 


Tym sposobem wykonanych zostanie <math>k-2</math> mnożeń i dzieleń liczb <math>O(\log{n})</math>-bitowych, czyli <math>O(k\log^2{n})</math> operacji bitowych. Aby otrzymać wynik musimy jeszcze wymnożyć przez siebie te potęgi, ktorym odpowiada bit <math>1</math> w liczbie <math>b</math>. Wykonanych zostanie więc jeszcze co najwyżej <math>k</math> mnożeń (które przeplatamy braniem reszty modulo <math>n</math>) liczb <math>O(\log{n})</math>-bitowych.
Tym sposobem wykonanych zostanie <math>k-2</math> mnożeń i dzieleń liczb <math>O(\log{n})</math>-bitowych, czyli <math>O(k\log^2{n})</math> operacji bitowych. Aby otrzymać wynik musimy jeszcze wymnożyć przez siebie te potęgi, ktorym odpowiada bit <math>1</math> w liczbie <math>b</math>. Wykonanych zostanie więc jeszcze co najwyżej <math>k</math> mnożeń (które przeplatamy braniem reszty modulo <math>n</math>) liczb <math>O(\log{n})</math>-bitowych.
Linia 437: Linia 441:
{{przyklad|||
{{przyklad|||


<center><math>7^{12} \mbox{ {\sf mod} } 10 =?
 
<center><math>7^{12} \mathsf{ mod} 10 =?
</math></center>
</math></center>


Linia 443: Linia 448:


* wyznaczamy wybrane potęgi <math>7</math> modulo <math>10</math>:
* wyznaczamy wybrane potęgi <math>7</math> modulo <math>10</math>:
** <math>7^2=49\equiv_{10} 9</math>,
** <math>7^2=49\equiv_{10} 9</math>,
** <math>7^4\equiv_{10}9\cdot9=81\equiv_{10}1</math>,
** <math>7^4\equiv_{10}9\cdot9=81\equiv_{10}1</math>,
** <math>7^8\equiv_{10}1\cdot1=1</math>,
** <math>7^8\equiv_{10}1\cdot1=1</math>,


Linia 458: Linia 460:
{{przyklad|||
{{przyklad|||


<center><math>3^{51} \mbox{ {\sf mod} } 13 =?
 
<center><math>3^{51} \mathsf{ mod} 13 =?
</math></center>
</math></center>


Linia 464: Linia 467:


* wyznaczamy wybrane potęgi <math>3</math> modulo <math>13</math>:
* wyznaczamy wybrane potęgi <math>3</math> modulo <math>13</math>:
** <math>3^2=9</math>,
** <math>3^2=9</math>,
** <math>3^4=9\cdot9=81\equiv_{13}3</math>,
** <math>3^4=9\cdot9=81\equiv_{13}3</math>,
** <math>3^8\equiv_{13}3\cdot3=9</math>,
** <math>3^8\equiv_{13}3\cdot3=9</math>,
** <math>3^{16}\equiv_{13}9\cdot9=81\equiv_{13}3</math>,
** <math>3^{16}\equiv_{13}9\cdot9=81\equiv_{13}3</math>,
** <math>3^{32}\equiv_{13}3\cdot3=9</math>.
** <math>3^{32}\equiv_{13}3\cdot3=9</math>.


Linia 496: Linia 494:
Pierwszy znany dowód tego twierdzenia przedstawił Leibniz w 1683 roku.
Pierwszy znany dowód tego twierdzenia przedstawił Leibniz w 1683 roku.


{{twierdzenie|Małe Twierdzenie Fermata||
{{twierdzenie|11.9 [Małe Twierdzenie Fermata]|tw 11.9|
Dla dowolnej <math>p</math> liczby pierwszej i dowolnego <math>a</math> zachodzi:


Dla dowolnej <math>p</math> liczby pierwszej i dowolnego <math>a</math> zachodzi:


<center><math>a^p\ \equiv_{p}a .
<center><math>a^p\ \equiv_{p}a </math></center>
</math></center>
 


}}
}}
Linia 512: Linia 510:
natomiast dla <math>a\in{\left\{ {1,\ldots,p-1} \right\} }</math> wystarczy udowodnić, że:
natomiast dla <math>a\in{\left\{ {1,\ldots,p-1} \right\} }</math> wystarczy udowodnić, że:


<center><math>a^{p-1}\ \equiv_{p}1 .
 
</math></center>
<center><math>a^{p-1}\ \equiv_{p}1 </math></center>
 


'''Pierwszy dowód.'''
'''Pierwszy dowód.'''
Dla <math>a\in{\left\{ {1,\ldots,p-1} \right\} }</math> rozważmy ciąg  
Dla <math>a\in{\left\{ {1,\ldots,p-1} \right\} }</math> rozważmy ciąg  


<center><math>a_0, a_1, a_2,\ldots, a_{p-1}
<center><math>a_0, a_1, a_2,\ldots, a_{p-1}
</math></center>
</math></center>


reszt <math>a_k = ka \mbox{ {\sf mod} } p </math> liczb <math>ka</math> modulo <math>p</math>.
 
reszt <math>a_k = ka \mathsf{ mod} p</math> liczb <math>ka</math> modulo <math>p</math>.
Pokażemy, że żadna wartość w tym ciągu się nie powtarza.  
Pokażemy, że żadna wartość w tym ciągu się nie powtarza.  
Niech <math>0\leq i<j<p</math> i, dla dowodu niewprost, niech
Niech <math>0\leq i<j<p</math> i, dla dowodu niewprost, niech


<center><math>ia\ \equiv_{p}ja .
 
</math></center>
<center><math>ia\ \equiv_{p}ja </math></center>
 


Wtedy <math>p|(j-i)a</math>. Ponieważ <math>p</math> jest liczba pierwszą to  
Wtedy <math>p|(j-i)a</math>. Ponieważ <math>p</math> jest liczba pierwszą to  
Linia 536: Linia 538:
muszą być równe, co daje:
muszą być równe, co daje:


<center><math>a\cdot2a\cdot\ldots\cdot(p-1)a
 
<center><math>a\cdot 2a\cdot\ldots\cdot(p-1)a
\equiv_p a_1 \cdot a_ 2\cdot\ldots\cdot a_{p-1}  
\equiv_p a_1 \cdot a_ 2\cdot\ldots\cdot a_{p-1}  
= 1\cdot2\cdot\ldots\cdot(p-1),
= 1\cdot2\cdot\ldots\cdot(p-1)</math>,</center>
</math></center>
 


lub inaczej:
lub inaczej:


<center><math>(p-1)! \cdot a^{p-1} \equiv_p (p-1)!.
 
</math></center>
<center><math>(p-1)! \cdot a^{p-1} \equiv_p (p-1)!</math></center>
 


Ponieważ <math>p</math> jest liczbą pierwszą,  
Ponieważ <math>p</math> jest liczbą pierwszą,  
Linia 551: Linia 555:
Można więc zastosować regułę skracania:  
Można więc zastosować regułę skracania:  


<center><math>a^{p-1}\ \equiv_{p}1 .
 
</math></center>
<center><math>a^{p-1}\ \equiv_{p}1 </math></center>
 


'''Drugi dowód.'''  
'''Drugi dowód.'''  
Dla dowodu indukcyjnego względem <math>a=0,1,2,\ldots,p-1</math> zauważmy najpierw, że  
Dla dowodu indukcyjnego względem <math>a=0,1,2,\ldots,p-1</math> zauważmy najpierw, że  
w oczywisty sposób <math>0^p\ \equiv_{p}0 </math> oraz <math>1^p\ \equiv_{p}1 </math>
w oczywisty sposób <math>0^p\ \equiv_{p}0</math> oraz <math>1^p\ \equiv_{p}1</math>
i załóżmy, że <math>k^p\ \equiv_{p}k </math>.  
i załóżmy, że <math>k^p\ \equiv_{p}k</math>.  
Aby udowodnić, że:  
Aby udowodnić, że:  


<center><math>(k+1)^p\ \equiv_{p}k+1  
<center><math>(k+1)^p\ \equiv_{p}k+1  
</math></center>
</math></center>


pokażemy znacznie mocniejszą równość
pokażemy znacznie mocniejszą równość


<center><math>(x+y)^p\ \equiv_{p}x^p+y^p ,
 
</math></center>
<center><math>(x+y)^p\ \equiv_{p}x^p+y^p </math>,</center>
 


która przy <math>x=k</math> i <math>y=1</math> pozwoli zakończyć dowód indukcyjny.
która przy <math>x=k</math> i <math>y=1</math> pozwoli zakończyć dowód indukcyjny.
Linia 572: Linia 580:
Rozwijając dwumian <math>(x+y)^p</math> mamy:  
Rozwijając dwumian <math>(x+y)^p</math> mamy:  


<center><math>(x+y)^p=\sum_{i=0}^p{p\choose i}x^iy^{p-i}.
 
</math></center>
<center><math>(x+y)^p=\sum_{i=0}^p{p\choose i}x^iy^{p-i}</math></center>
 


Współczynnik <math>{p\choose i}=\frac{p!}{i!(p-i)!}</math> jest zawsze liczbą całkowitą.  
Współczynnik <math>{p\choose i}=\frac{p!}{i!(p-i)!}</math> jest zawsze liczbą całkowitą.  
Linia 579: Linia 588:
są względnie pierwsze z <math>p</math>, bo <math>p</math> jest pierwsza, a czynniki te są mniejsze niż <math>p</math>.  
są względnie pierwsze z <math>p</math>, bo <math>p</math> jest pierwsza, a czynniki te są mniejsze niż <math>p</math>.  
Oznacza to, iż w rozkładzie <math>{p\choose i}</math> na czynniki pierwsze musi znaleźć się <math>p</math>.  
Oznacza to, iż w rozkładzie <math>{p\choose i}</math> na czynniki pierwsze musi znaleźć się <math>p</math>.  
To zaś implikuje <math>{p\choose i}\ \equiv_{p}0 </math> dla <math>0<i<p</math>. A więc
To zaś implikuje <math>{p\choose i}\ \equiv_{p}0</math> dla <math>0<i<p</math>. A więc
 


<center><math>(x+y)^p
<center><math>(x+y)^p
=\sum_{i=0}^p{p\choose i}x^iy^{p-i}
=\sum_{i=0}^p{p\choose i}x^iy^{p-i}
\equiv_p \sum_{i\in{\left\{ {0,p} \right\} }}{p\choose i}x^iy^{p-i}
\equiv_p \sum_{i\in{\left\{ {0,p} \right\} }}{p\choose i}x^iy^{p-i}
=x^p+y^p.
=x^p+y^p</math></center>
</math></center>
 


'''Trzeci dowód.'''
'''Trzeci dowód.'''
Niech <math>a\in{\left\{ {1,\ldots,p-1} \right\} }</math>.  
Niech <math>a\in{\left\{ {1,\ldots,p-1} \right\} }</math>.  
Rozważmy słowa długości <math>p</math> nad  alfabetem <math>a</math>-elementowym.
Rozważmy słowa długości <math>p</math> nad  alfabetem <math>a</math>-elementowym.}}


{{przyklad|||
{{przyklad|||
Niech <math>p=7</math>, <math>a=3</math>. Symbolami alfabetu niech będą A,B,C.  
Niech <math>p=7</math>, <math>a=3</math>. Symbolami alfabetu niech będą A,B,C.  
Oto mocno skrócona lista <math>3^7=2187</math> wszystkich słów <math>7</math>-literowych nad tym alfabetem.
Oto mocno skrócona lista <math>3^7=2187</math> wszystkich słów <math>7</math>-literowych nad tym alfabetem.}}
 


{| border=1
{| border=1
|+ <span style="font-variant:small-caps">Uzupelnij tytul</span>
|+ <span style="font-variant:small-caps"></span>
|-  
|-  
|  || AAAAAAA,  || AAAAAAB,  || AAAAAAC,  || AAAAABA,  || AAAAABB,
|  || AAAAAAA,  || AAAAAAB,  || AAAAAAC,  || AAAAABA,  || AAAAABB,
Linia 608: Linia 619:
|}
|}


}}
 


Wszystkich takich słów jest <math>a^p</math>.  
Wszystkich takich słów jest <math>a^p</math>.  
Pokażemy, że po usunięciu słów jednoliterowych,  
Pokażemy, że po usunięciu słów jednoliterowych,  
pozostałe <math>a^p-a</math> słów będzie można podzielić na rozłączne <math>p</math>-elementowe grupy.  
pozostałe <math>a^p-a</math> słów będzie można podzielić na rozłączne <math>p</math>-elementowe grupy.  
To oczywiście natychmiast da <math>p|a^p-a</math>, czyli pożądaną równość <math>a^p\ \equiv_{p}a </math>.
To oczywiście natychmiast da <math>p|a^p-a</math>, czyli pożądaną równość <math>a^p\ \equiv_{p}a</math>.


Słowo <math>v</math> nazwiemy przesunięciem cyklicznym słowa <math>w=w_1\ldots w_k</math>  
Słowo <math>v</math> nazwiemy przesunięciem cyklicznym słowa <math>w=w_1\ldots w_k</math>  
o <math>i</math> liter, jeśli  
o <math>i</math> liter, jeśli  


<center><math>v=w_{i+1}w_{i+2}\ldots w_kw_1\ldots w_{i-1}w_i.
 
</math></center>
<center><math>v=w_{i+1}w_{i+2}\ldots w_kw_1\ldots w_{i-1}w_i</math></center>
 


{{przyklad|||
{{przyklad|||
Przesunięcia cykliczne słowa CBAABCB:}}


Przesunięcia cykliczne słowa CBAABCB:<br>


{| border=1
{| border=1
|+ <span style="font-variant:small-caps">Uzupelnij tytul</span>
|+ <span style="font-variant:small-caps"></span>
|-  
|-  
|  || CBAABCB,  || BAABCBC,  || AABCBCB,  || ABCBCBA,  || BCBCBAA,
|  || CBAABCB,  || BAABCBC,  || AABCBCB,  || ABCBCBA,  || BCBCBAA,
Linia 633: Linia 645:


|}
|}


Przesunięcia cykliczne słowa ABCABC:<br>
Przesunięcia cykliczne słowa ABCABC:<br>


{| border=1
{| border=1
|+ <span style="font-variant:small-caps">Uzupelnij tytul</span>
|+ <span style="font-variant:small-caps"></span>
|-  
|-  
|  || ABCABC,  || BCABCA,  || CABCAB. ||  ||  
|  || ABCABC,  || BCABCA,  || CABCAB. ||  ||  
Linia 643: Linia 657:
|}
|}


}}


Drugi przykład pokazuje, że niektóre przesuniecia cyklicze sa równe.
Drugi przykład pokazuje, że niektóre przesuniecia cyklicze sa równe.
W istocie mamy:  
W istocie mamy:  


{{lemat|||
{{lemat|11.10|lem 11.10|
Niech <math>v</math> będzie słowem, którego nie da się przedstawić jako  
Niech <math>v</math> będzie słowem, którego nie da się przedstawić jako  
<math>u^l=u\ldots u</math>,  
<math>u^l=u\ldots u</math>,  
Linia 654: Linia 667:
Z kolei niech <math>w= v^k=v\ldots v</math>,  
Z kolei niech <math>w= v^k=v\ldots v</math>,  
dla pewnego <math>k>0</math>.
dla pewnego <math>k>0</math>.
Wtedy słowo <math>w</math> ma dokładnie <math>\left\vertv\right\vert</math> różnych przesunięć cyklicznych.
Wtedy słowo <math>w</math> ma dokładnie <math>\left\vert v\right\vert</math> różnych przesunięć cyklicznych.
}}
}}


Linia 660: Linia 673:
Oczywiście, jeśli liczba liter, o które różnią się dwa przesunięcia cykliczne  
Oczywiście, jeśli liczba liter, o które różnią się dwa przesunięcia cykliczne  
jest wielokrotnością długousi słowa <math>v</math>, to te dwa przesunięcia dają to samo słowo.
jest wielokrotnością długousi słowa <math>v</math>, to te dwa przesunięcia dają to samo słowo.
A zatem  <math>w</math> ma co najwyżej <math>\left\vertv\right\vert</math> różnych przesunięć cyklicznych.
A zatem  <math>w</math> ma co najwyżej <math>\left\vert v\right\vert</math> różnych przesunięć cyklicznych.
Z drugiej strony, gdyby dwa przesunięcia cykliczne słowa <math>v</math> były równe,
Z drugiej strony, gdyby dwa przesunięcia cykliczne słowa <math>v</math> były równe,
to dawałyby to samo słowo.  
to dawałyby to samo słowo.  
Istotnie, gdy  <math>v=v_1\ldots v_m</math> i <math>v_1,\ldots,v_m</math> są literami alfabetu,  
Istotnie, gdy  <math>v=v_1\ldots v_m</math> i <math>v_1,\ldots,v_m</math> są literami alfabetu,  
to każde przesunięcie cykliczne prowadzi do jednego ze słów z listy:
to każde przesunięcie cykliczne prowadzi do jednego ze słów z listy:


<center><math>\begin{array} {rcll}
<center><math>\begin{array} {rcll}
Linia 675: Linia 689:
</math></center>
</math></center>


Ponieważ <math>\left\vertv\right\vert=m</math>, pozostaje pokazać, że słowa na tej liście sa różne.
 
Ponieważ <math>\left\vert v\right\vert =m</math>, pozostaje pokazać, że słowa na tej liście sa różne.
Dla dowodu niewprost, bez straty ogólności, możemy założyć, że:
Dla dowodu niewprost, bez straty ogólności, możemy założyć, że:


<center><math>v_1\ldots v_m v^{k-1}=v_i\ldots v_m v^{k-1}v_1v_2\ldots v_{i-1},
 
</math></center>
<center><math>v_1\ldots v_m v^{k-1}=v_i\ldots v_m v^{k-1}v_1v_2\ldots v_{i-1}</math>,</center>
 


dla pewnego <math>1<i\leq m</math>. Wtedy  
dla pewnego <math>1<i\leq m</math>. Wtedy  


<center><math>v_1\ldots v_m=v_i\ldots v_mv_1\ldots v_{i-1}.
 
</math></center>
<center><math>v_1\ldots v_m=v_i\ldots v_mv_1\ldots v_{i-1}</math></center>
 


To z kolei prowadzi do ciągu równości w poniższym diagramie:
To z kolei prowadzi do ciągu równości w poniższym diagramie:


<center><math>\begin{array} {lcllcllcl}
<center><math>\begin{array} {lcllcllcl}
Linia 694: Linia 712:
\end{array}  
\end{array}  
</math></center>
</math></center>


Czyli słowo <math>v</math> jest postaci <math>v=x^l</math> dla <math>x=v_i\ldots v_m</math> i <math>l=\frac{m}{m-(i-1)}</math>,  
Czyli słowo <math>v</math> jest postaci <math>v=x^l</math> dla <math>x=v_i\ldots v_m</math> i <math>l=\frac{m}{m-(i-1)}</math>,  
Linia 702: Linia 721:
Niech więc <math>w</math> będzie słowem, w którym występują dwie różne litery alfabetu.
Niech więc <math>w</math> będzie słowem, w którym występują dwie różne litery alfabetu.
Słowo to nie może być postaci <math>v^l</math>, gdzie <math>l\geq2</math>,  
Słowo to nie może być postaci <math>v^l</math>, gdzie <math>l\geq2</math>,  
gdyż inaczej <math>\left\vertv\right\vert|p</math>,   
gdyż inaczej <math>\left\vert v\right\vert |p</math>,   
a skoro <math>p</math> jest liczbą pierwszą, to <math>\left\vertv\right\vert=1</math> lub <math>\left\vertv\right\vert=p=\left\vertw\right\vert</math>.  
a skoro <math>p</math> jest liczbą pierwszą, to <math>\left\vert v\right\vert =1</math> lub <math>\left\vert v\right\vert =p=\left\vert w\right\vert</math>.  
W pierwszym przypadku <math>w</math> jest jednoliterowe, a w drugim <math>v=w</math> i <math>l=1</math>.
W pierwszym przypadku <math>w</math> jest jednoliterowe, a w drugim <math>v=w</math> i <math>l=1</math>.
A zatem każde z <math>a^p-a</math> słów <math>w</math> ma dokładnie <math>p</math> różnych przesunięć cyklicznych.
A zatem każde z <math>a^p-a</math> słów <math>w</math> ma dokładnie <math>p</math> różnych przesunięć cyklicznych.
To dowodzi, iż <math>p|a^p-a</math>, czyli <math>a^p\ \equiv_{p}a </math>.  
To dowodzi, iż <math>p|a^p-a</math>, czyli <math>a^p\ \equiv_{p}a</math>.
}}


W jednym z dalszych wykładów  
W jednym z dalszych wykładów  
Linia 720: Linia 738:
Zauważmy bowiem, że:  
Zauważmy bowiem, że:  


<center><math>a^b \equiv_p a^{b'},
<center><math>a^b \equiv_p a^{b'}</math>,</center>
</math></center>


gdzie <math>b'</math> jest resztą z dzielenia <math>b</math> przez <math>p-1</math>.
gdzie <math>b'</math> jest resztą z dzielenia <math>b</math> przez <math>p-1</math>.


{{przyklad|||
{{przyklad|||
Policzmy <math>7^{126} \mbox{ {\sf mod} } 11 </math>.
Policzmy <math>7^{126} \mathsf{ mod} 11</math>.


* <math>11</math> jest liczba pierwszą, czyli możemy skorzystać z Małego Twierdzenia Fermata,
* <math>11</math> jest liczba pierwszą, czyli możemy skorzystać z Małego Twierdzenia Fermata,


* <math>126 \mbox{ {\sf mod} } 10 =6</math>,
* <math>126 \mathsf{ mod} 10 =6</math>,


* <math>7^{126}\equiv_{11}7^6</math>,
* <math>7^{126}\equiv_{11}7^6</math>,
Linia 737: Linia 754:


* liczymy wybrane potęgi <math>7</math> modulo <math>11</math>:
* liczymy wybrane potęgi <math>7</math> modulo <math>11</math>:
** <math>7^2=49\equiv_{11}5</math>,
** <math>7^2=49\equiv_{11}5</math>,
** <math>7^4\equiv_{11}5\cdot5=25\equiv_{11}4</math>.
** <math>7^4\equiv_{11}5\cdot5=25\equiv_{11}4</math>.


Linia 751: Linia 766:


Poznamy teraz uogólnienie Małego Twierdzenia Fermata pochodzące od Eulera.
Poznamy teraz uogólnienie Małego Twierdzenia Fermata pochodzące od Eulera.
Uogólnienie to leży u podstaw znanego systemu kryptograficznego -- RSA.
Uogólnienie to leży u podstaw znanego systemu kryptograficznego - RSA.
Potrzebne nam będzie funkcja zliczające liczby względnie pierwsze z liczbą <math>n</math>.
Potrzebne nam będzie funkcja zliczające liczby względnie pierwsze z liczbą <math>n</math>.


Linia 757: Linia 772:
zdefiniowaną poprzez
zdefiniowaną poprzez


<center><math>\varphi(n)=\left\vert{\left\{ {1\leq a<n\quad:\quad \mbox{\sf NWD}(a,n)=1} \right\} }\right\vert.
</math></center>


{{obserwacja|||
<center><math>\varphi(n)=\left\vert{\left\{ {1\leq a<n\quad:\quad \mathsf{ NWD}(a,n)=1} \right\} }\right\vert</math></center>
 


{{obserwacja|11.11|obs 11.11|
Dla dowolnej liczby pierwszej <math>p</math> zachodzi:
Dla dowolnej liczby pierwszej <math>p</math> zachodzi:


Linia 779: Linia 794:
}}
}}


{{obserwacja|||
{{obserwacja|11.12|obs 11.12|
Dla dowolnych <math>m,n>0</math> takich, że <math>m\perp n</math> zachodzi


Dla dowolnych <math>m,n>0</math> takich, że <math>m\perp n</math> zachodzi


<center><math>\varphi(m n)=\varphi(m)\varphi(n).
<center><math>\varphi(m n)=\varphi(m)\varphi(n)</math></center>
</math></center>
 


}}
}}


{{dowod|||
{{dowod|||
Z Chińskiego Twierdzenia o Resztach wiemy,  
Z [[#tw_11.7|Chińskiego Twierdzenia o Resztach]] wiemy,  
iż każda liczba z przedziału <math>[0,\ldots,mn-1]</math>  
iż każda liczba z przedziału <math>[0,\ldots,mn-1]</math>  
jest jednoznacznie wyznaczona przez jej reszty modulo <math>m</math> i modulo <math>n</math>.  
jest jednoznacznie wyznaczona przez jej reszty modulo <math>m</math> i modulo <math>n</math>.  
Wiemy także, że dla dowolnego <math>a</math>:  
Wiemy także, że dla dowolnego <math>a</math>:  


<math>\mbox{\sf NWD}(a,mn)=1</math> wtedy i tylko wtedy, gdy <math>\mbox{\sf NWD}(a,m)=1=\mbox{\sf NWD}(a,n)</math>.  
 
<math>\mathsf{ NWD}(a,mn)=1</math> wtedy i tylko wtedy, gdy <math>\mathsf{ NWD}(a,m)=1=\mathsf{ NWD}(a,n)</math>.  
 


To oznacza, iż liczb <math>0\leq a<mn</math> takich, że <math>a \perp mn</math>
To oznacza, iż liczb <math>0\leq a<mn</math> takich, że <math>a \perp mn</math>
Linia 802: Linia 819:
}}
}}


{{wniosek|||
{{wniosek|11.13|wn 11.13|
 
Jeśli <math>n=p_1^{\alpha_1}p_2^{\alpha_2}\ldots p_k^{\alpha_k}</math>  
Jeśli <math>n=p_1^{\alpha_1}p_2^{\alpha_2}\ldots p_k^{\alpha_k}</math>  
jest rozkładem na liczby pierwsze <math>p_i</math>, w którym <math>\alpha_i\geq 1</math>, to:
jest rozkładem na liczby pierwsze <math>p_i</math>, w którym <math>\alpha_i\geq 1</math>, to:


<center><math>\aligned \varphi(n)
 
<center><math>\begin{align} \varphi(n)
&=\varphi(p_1^{\alpha_1})\ldots\varphi(p_k^{\alpha_k})\\
&=\varphi(p_1^{\alpha_1})\ldots\varphi(p_k^{\alpha_k})\\
&=p_1^{\alpha_1}\left(1-\frac{1}{p_1}\right)p_2^{\alpha_2}\left(1-\frac{1}{p_2}\right)\ldots p_k^{\alpha_k}\left(1-\frac{1}{p_k}\right)\\
&=p_1^{\alpha_1}\left(1-\frac{1}{p_1}\right)p_2^{\alpha_2}\left(1-\frac{1}{p_2}\right)\ldots p_k^{\alpha_k}\left(1-\frac{1}{p_k}\right)\\
&=n\cdot\prod_{p|n}\left(1-\frac{1}{p}\right),
&=n\cdot\prod_{p|n}\left(1-\frac{1}{p}\right),
\endaligned</math></center>
\end{align}</math></center>
 


gdzie ostatnim iloczyn przebiega po wszystkich liczbach pierwszych <math>p</math>  dzielących <math>n</math>.
gdzie ostatnim iloczyn przebiega po wszystkich liczbach pierwszych <math>p</math>  dzielących <math>n</math>.
Linia 827: Linia 845:
* <math>1980=2^2\cdot3^2\cdot5\cdot11</math>,
* <math>1980=2^2\cdot3^2\cdot5\cdot11</math>,


* <math>\varphi(1980)=1980\cdot(1-\frac{1}{2})^2(1-\frac{1}{3})^2\cdot(1-\frac{1}{5})\cdot(1-\frac{1}{11})=480</math>.
* <math>\varphi(1980)=1980\cdot(1-\frac{1}{2})\cdot(1-\frac{1}{3})\cdot(1-\frac{1}{5})\cdot(1-\frac{1}{11})=480</math>.


}}
}}


{{twierdzenie|Euler 1736||
{{twierdzenie|11.14 [Euler 1736]|tw 11.14|
Dla dowolnych <math>a,n</math>, gdzie <math>\mathsf{ NWD}(a,n)=1</math> zachodzi:
 


Dla dowolnych <math>a,n</math>, gdzie <math>\mbox{\sf NWD}(a,n)=1</math> zachodzi:
<center><math>a^{\varphi(n)}\ \equiv_{n}1 </math></center>


<center><math>a^{\varphi(n)}\ \equiv_{n}1 .
</math></center>


}}
}}
Linia 845: Linia 863:
będą wszystkimi liczbami względnie pierwszymi z <math>n</math> i niewiększymi od <math>n</math>.  
będą wszystkimi liczbami względnie pierwszymi z <math>n</math> i niewiększymi od <math>n</math>.  
Rozważmy ciąg
Rozważmy ciąg


<center><math>a_1, a_2,\ldots, a_{\varphi(n)}
<center><math>a_1, a_2,\ldots, a_{\varphi(n)}
</math></center>
</math></center>


reszt <math>a_i = m_i a \mbox{ {\sf mod} } n </math> liczb <math>m_i a</math> modulo <math>n</math>.
 
reszt <math>a_i = m_i a \mathsf{ mod} n</math> liczb <math>m_i a</math> modulo <math>n</math>.
Pokażemy, że żadna wartość w tym ciągu się nie powtarza.  
Pokażemy, że żadna wartość w tym ciągu się nie powtarza.  
Niech <math>1\leq i<j\leq \varphi(n)</math> i, dla dowodu niewprost, niech
Niech <math>1\leq i<j\leq \varphi(n)</math> i, dla dowodu niewprost, niech


<center><math>m_ia\ \equiv_{n}m_ja .
 
</math></center>
<center><math>m_ia\ \equiv_{n}m_ja </math></center>
 


Wtedy <math>n|(m_j-m_i)a</math>, a ponieważ <math>n\perp a</math>,  
Wtedy <math>n|(m_j-m_i)a</math>, a ponieważ <math>n\perp a</math>,  
Linia 868: Linia 889:
wszystkie wartości <math>m_1,\ldots,m_{\varphi(n)}</math> i każdą tylko raz.
wszystkie wartości <math>m_1,\ldots,m_{\varphi(n)}</math> i każdą tylko raz.
A zatem  
A zatem  


<center><math>m_1a\cdot m_2a\cdot\ldots\cdot m_{\varphi(n)}a
<center><math>m_1a\cdot m_2a\cdot\ldots\cdot m_{\varphi(n)}a
\equiv_n a_1\cdot a_2\ldots a_{\varphi(n)}
\equiv_n a_1\cdot a_2\ldots a_{\varphi(n)}
=m_1\cdot m_2\cdot\ldots\cdot m_{\varphi(n)}.
=m_1\cdot m_2\cdot\ldots\cdot m_{\varphi(n)}</math></center>
</math></center>
 


Ponieważ liczby <math>m_1,\ldots,m_{\varphi(n)}</math> są względnie pierwsze z <math>n</math>
Ponieważ liczby <math>m_1,\ldots,m_{\varphi(n)}</math> są względnie pierwsze z <math>n</math>
możemy zastosować regułę skracania, by dostać
możemy zastosować regułę skracania, by dostać


<center><math>a^{\varphi(m)}\ \equiv_{n}1 .
 
</math></center>
<center><math>a^{\varphi(m)}\ \equiv_{n}1 </math></center>
 


}}
}}
Linia 895: Linia 918:


{{przyklad|||
{{przyklad|||
Spróbujmy policzyć <math>13^{101} \mbox{ {\sf mod} } 16 </math>.
Spróbujmy policzyć <math>13^{101} \mathsf{ mod} 16</math>.


* <math>13\perp16</math>, czyli możemy skorzystać z Twierdzenia Eulera,
* <math>13\perp16</math>, czyli możemy skorzystać z Twierdzenia Eulera,
Linia 901: Linia 924:
* <math>\varphi(16)=8</math>,
* <math>\varphi(16)=8</math>,


* <math>101 \mbox{ {\sf mod} } 8 =5</math>,
* <math>101 \mathsf{ mod} 8 =5</math>,


* <math>13^{101}\equiv_{16} 13^5</math>,
* <math>13^{101}\equiv_{16} 13^5</math>,
Linia 908: Linia 931:


* liczymy wybrane potęgi <math>13</math> modulo <math>16</math>:
* liczymy wybrane potęgi <math>13</math> modulo <math>16</math>:
** <math>13^1\equiv_{16}13</math>,
** <math>13^1\equiv_{16}13</math>,
** <math>13^2\equiv_{16}13\cdot13= 169 \equiv_{16} 9</math>,
** <math>13^2\equiv_{16}13\cdot13= 169 \equiv_{16} 9</math>,
** <math>13^4\equiv_{16}9\cdot9=81\equiv_{16}1</math>.
** <math>13^4\equiv_{16}9\cdot9=81\equiv_{16}1</math>.


Linia 921: Linia 941:
===Funkcja Mobiusa===
===Funkcja Mobiusa===


Choć Wniosek  [[##phi(n)|Uzupelnic phi(n)|]] wyprowadziliśmy już  bezpośrednio z Obserwacji
Choć [[#wn_11.13|Wniosek 11.13]] wyprowadziliśmy już  bezpośrednio z
[[##phi(p)|Uzupelnic phi(p)|]] i [[##phi iloczynu|Uzupelnic phi iloczynu|]], na zakończenie tego wykładu  
[[#obs_11.11|Obserwacji 11.11]] i [[#obs_11.12|11.12]], na zakończenie tego wykładu  
przedstawimy  jego alternatywny dowód.  
przedstawimy  jego alternatywny dowód.  
Metoda użyta w tym alternatywnym dowodzie będzie przydatna w kilku innych sytuacjach.
Metoda użyta w tym alternatywnym dowodzie będzie przydatna w kilku innych sytuacjach.
Linia 931: Linia 951:
Zdefiniujmy <math>A_i</math> jako zbiór wielokrotności liczby <math>p_i</math> w  
Zdefiniujmy <math>A_i</math> jako zbiór wielokrotności liczby <math>p_i</math> w  
<math>{\left\{ {1,\ldots,n-1} \right\} }</math>.  
<math>{\left\{ {1,\ldots,n-1} \right\} }</math>.  
Wtedy <math>\varphi(n)=n-\left\vertA_1\cup\ldots\cup A_k\right\vert</math>.  
Wtedy <math>\varphi(n)=n-\left\vert A_1\cup\ldots\cup A_k\right\vert</math>.  
Korzystając z Zasady Włączania i Wyłączania otrzymujemy
Korzystając z Zasady Włączania i Wyłączania otrzymujemy


<center><math>\varphi(n)=n-\left\vertA_1\cup\ldots\cup A_k\right\vert=n-\alpha_1+\alpha_2-\ldots+(-1)^k\alpha_k,
 
</math></center>
<center><math>\varphi(n)=n-\left\vert A_1\cup\ldots\cup A_k\right\vert =n-\alpha_1+\alpha_2-\ldots+(-1)^k\alpha_k</math>,</center>
 


gdzie  
gdzie  
<math>\alpha_i=\sum_{1\leq j_1<\ldots<j_i\leq k}\left\vertA_{j_1}\cap\ldots\cap A_{j_i}\right\vert</math>.  
<math>\alpha_i=\sum_{1\leq j_1<\ldots<j_i\leq k}\left\vert A_{j_1}\cap\ldots\cap A_{j_i}\right\vert</math>.  
Zauważmy, że zbiór <math>A_{j_1}\cap\ldots\cap A_{j_i}</math>  
Zauważmy, że zbiór <math>A_{j_1}\cap\ldots\cap A_{j_i}</math>  
składa się z wielokrotności liczby <math>P=p_{j_1}\cdot\ldots\cdot p_{j_k}</math>,  
składa się z wielokrotności liczby <math>P=p_{j_1}\cdot\ldots\cdot p_{j_k}</math>,  
czyli liczb <math>P,2P,\ldots,(\frac{n}{P})P</math>.  
czyli liczb <math>P,2P,\ldots,(\frac{n}{P})P</math>.  
Zatem  
Zatem  
<math>\left\vertA_{j_1}\cap\ldots\cap A_{j_i}\right\vert=\frac{n}{P}=\frac{n}{p_{i_1}\cdot\ldots\cdot p_{j_i}}</math>,
<math>\left\vert A_{j_1}\cap\ldots\cap A_{j_i}\right\vert =\frac{n}{P}=\frac{n}{p_{i_1}\cdot\ldots\cdot p_{j_i}}</math>,
skąd  
skąd  


<center><math>\alpha_i=\sum_{1\leq j_1<\ldots<j_i\leq k}\frac{n}{p_{j_1}\cdot\ldots\cdot p_{j_i}}=n\sum_{1\leq j_1<\ldots<j_i\leq k}\frac{1}{p_{j_1}\cdot\ldots\cdot p_{j_i}}.
 
</math></center>
<center><math>\alpha_i=\sum_{1\leq j_1<\ldots<j_i\leq k}\frac{n}{p_{j_1}\cdot\ldots\cdot p_{j_i}}=n\sum_{1\leq j_1<\ldots<j_i\leq k}\frac{1}{p_{j_1}\cdot\ldots\cdot p_{j_i}}</math></center>
 


Teraz łatwo już policzyć
Teraz łatwo już policzyć


<center><math>\aligned \varphi(n)&=n-\alpha_1+\alpha_2-\alpha_3+\ldots+(-1)^k\alpha_k\\
 
<center><math>\begin{align} \varphi(n)&=n-\alpha_1+\alpha_2-\alpha_3+\ldots+(-1)^k\alpha_k\\
&=n-n(\frac{1}{p_1}+\frac{1}{p_2}+\ldots+\frac{1}{p_k})+n(\frac{1}{p_1p_2}+\frac{1}{p_1p_3}+\ldots)-\ldots\\
&=n-n(\frac{1}{p_1}+\frac{1}{p_2}+\ldots+\frac{1}{p_k})+n(\frac{1}{p_1p_2}+\frac{1}{p_1p_3}+\ldots)-\ldots\\
&&\ldots+n(-1)^k\frac{1}{p_1\cdot\ldots\cdot p_k}\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad(*)\\
&&\ldots+n(-1)^k\frac{1}{p_1\cdot\ldots\cdot p_k}\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad(*)\\
&=n(1-\frac{1}{p_1})\cdot\ldots\cdot(1-\frac{1}{p_k}).
&=n(1-\frac{1}{p_1})\cdot\ldots\cdot(1-\frac{1}{p_k}).
\endaligned</math></center>
\end{align}</math></center>
 


}}
}}
Linia 962: Linia 986:
Analizując ostatnią sumę dla <math>n=60=2^2\cdot3\cdot5</math> mamy
Analizując ostatnią sumę dla <math>n=60=2^2\cdot3\cdot5</math> mamy


<center><math>\varphi(60)=\frac{60}{1}-(\frac{60}{2}+\frac{60}{3}+\frac{60}{5})+(\frac{60}{6}+\frac{60}{10}+\frac{60}{15})-\frac{60}{30}.
 
</math></center>
<center><math>\varphi(60)=\frac{60}{1}-(\frac{60}{2}+\frac{60}{3}+\frac{60}{5})+(\frac{60}{6}+\frac{60}{10}+\frac{60}{15})-\frac{60}{30}</math></center>
 


Po prawej stronie mamy naprzemienną sumę składników <math>\frac{n}{d}</math>,  
Po prawej stronie mamy naprzemienną sumę składników <math>\frac{n}{d}</math>,  
Linia 972: Linia 997:
Zależność tę możemy ogólniej zapisać w postaci
Zależność tę możemy ogólniej zapisać w postaci


<center><math>\varphi(n)=\sum_{d|n}\mu(d)\frac{n}{d},
 
</math></center>
<center><math>\varphi(n)=\sum_{d|n}\mu(d)\frac{n}{d}</math>,</center>
 


gdzie <math>\mu(d)</math> zadana jest przez:
gdzie <math>\mu(d)</math> zadana jest przez:


<center><math>\mu(d)=
<center><math>\mu(d)=
\left\{\begin{array} {cl}
\begin{cases}  
1,&\textrm{jeśli </math>d<nowiki>=</nowiki>1<math>,}\\  
1, &\text{jeśli }\mathit{d}=1,\\  
(-1)^k,&\textrm{jeśli </math>d<math> jest iloczynem </math>k<math> różnych liczb pierwszych,}\\  
(-1)^k, &\text{jeśli }\mathit{d} \text{jest iloczynem }\mathit{k} \text{różnych liczb pierwszych,}\\  
0,&\textrm{jeśli w rozkładzie </math>d<math> któryś z czynników się powtarza.}
0, &\text{jeśli w rozkładzie } \mathit{d} \text{któryś z czynników się powtarza.}
\end{array} \right.
\end{cases}
</math></center>
</math></center>


Funkcja <math>\mu(d)</math> jest znana jako '''funkcja Mobiusa''',  
 
Funkcja <math>\mu(d)</math> jest znana jako {{kotwica|funmob|'''funkcja Mobiusa'''|}},  
na cześć niemieckiego matematyka Augusta Ferdynanda Mobiusa,  
na cześć niemieckiego matematyka Augusta Ferdynanda Mobiusa,  
który jako pierwszy użył jej w 1831 roku.  
który jako pierwszy użył jej w 1831 roku.  
Linia 992: Linia 1020:
teorii grup i teorii ciał.
teorii grup i teorii ciał.


{{obserwacja|||
{{obserwacja|11.15|obs 11.15|
 
Dla dowolnego <math>n\geqslant2</math> mamy  
Dla dowolnego <math>n\geqslant2</math> mamy  
<math>\sum_{d|n}\mu(d)=0.
<math>\sum_{d|n}\mu(d)=0</math>
</math>
}}
}}


Linia 1013: Linia 1039:
A zatem:  
A zatem:  


<center><math>\sum_{d|n}\mu(d)=1-{k\choose 1}+{k\choose2}-    \ldots+(-1)^k{k\choose k}=0.
 
</math></center>
<center><math>\sum_{d|n}\mu(d)=1-{k\choose 1}+{k\choose2}-    \ldots+(-1)^k{k\choose k}=0</math></center>
 


}}
}}


{{obserwacja|wzór inwersyjny Mobiusa||
{{obserwacja|11.16 [wzór inwersyjny Mobiusa]|obs 11.16|
 
Dla dowolnych funkcji <math>f,g : \mathbb{N} \longrightarrow \mathbb{R}</math>,  
Dla dowolnych funkcji <math>f,g : \mathbb{N} \longrightarrow \mathbb{R}</math>,  
jeśli <math>f(n)=\sum_{d|n}g(d)</math>, to <math>g(n)=\sum_{d|n}\mu(d)f(\frac{n}{d})</math>.
jeśli <math>f(n)=\sum_{d|n}g(d)</math>, to <math>g(n)=\sum_{d|n}\mu(d)f(\frac{n}{d})</math>.
Linia 1027: Linia 1053:
Ponieważ
Ponieważ


<center><math>f(n)= \sum_{d|n}g(d),
 
</math></center>
<center><math>f(n)= \sum_{d|n}g(d)</math>,</center>
 


to
to


<center><math>\aligned \sum_{d|n} \mu(d) f\left(\frac{n}{d}\right)
 
<center><math>\begin{align} \sum_{d|n} \mu(d) f\left(\frac{n}{d}\right)
&=\sum_{d|n} \mu(d)\sum_{c|\frac{n}{d}}g(c)\\
&=\sum_{d|n} \mu(d)\sum_{c|\frac{n}{d}}g(c)\\
&=\sum_{d|n,c|\frac{n}{d}} \mu(d)g(c).
&=\sum_{d|n,c|\frac{n}{d}} \mu(d)g(c).
\endaligned</math></center>
\end{align}</math></center>
 


Zauważmy, iż <math>{\left\{ {(c,d):d|n,c|\frac{n}{d}} \right\} }={\left\{ {(c,d):c|n,d|\frac{n}{c}} \right\} }</math>.
Zauważmy, iż <math>{\left\{ {(c,d):d|n,c|\frac{n}{d}} \right\} }={\left\{ {(c,d):c|n,d|\frac{n}{c}} \right\} }</math>.
Zatem
Zatem


<center><math>\aligned \sum_{d|n} \mu(d) f\left(\frac{n}{d}\right)
 
<center><math>\begin{align} \sum_{d|n} \mu(d) f\left(\frac{n}{d}\right)
&=\sum_{c|n,d|\frac{n}{c}}\mu(d)g(c)\\
&=\sum_{c|n,d|\frac{n}{c}}\mu(d)g(c)\\
&=\sum_{c|n}g(c)\sum_{d|\frac{n}{c}}\mu(d).
&=\sum_{c|n}g(c)\sum_{d|\frac{n}{c}}\mu(d).
\endaligned</math></center>
\end{align}</math></center>
 


Z Obserwacji [[##obserwacja - suma naprzemienna mu|Uzupelnic obserwacja - suma naprzemienna mu|]] wiemy,  
Z [[#obs_11.15|Obserwacji 11.15]] wiemy,  
że wewnętrze sumy zerują się  
że wewnętrze sumy zerują się  
dla wszystkich <math>\frac{n}{c}\geqslant2</math>.  
dla wszystkich <math>\frac{n}{c}\geqslant2</math>.  
Zatem jedyny interesujący składnik zewnętrznej sumy dostajemy przy <math>c=n</math>:
Zatem jedyny interesujący składnik zewnętrznej sumy dostajemy przy <math>c=n</math>:


<center><math>\aligned \sum_{d|n} \mu(d) f\left(\frac{n}{d}\right)
 
<center><math>\begin{align} \sum_{d|n} \mu(d) f\left(\frac{n}{d}\right)
&=\sum_{c|n}g(c)\sum_{d|\frac{n}{c}}\mu(d)\\
&=\sum_{c|n}g(c)\sum_{d|\frac{n}{c}}\mu(d)\\
&=g(n)\sum_{d|1}\mu(d)=g(n)\mu(1)=g(n).
&=g(n)\sum_{d|1}\mu(d)=g(n)\mu(1)=g(n).
\endaligned</math></center>
\end{align}</math></center>
 


}}
}}
Linia 1060: Linia 1093:
do wyprowadzenia następującego wniosku:
do wyprowadzenia następującego wniosku:


{{wniosek|||
{{wniosek|11.17|wn 11.17|
<math>\sum_{d|n} \varphi(d) = n</math>.
<math>\sum_{d|n} \varphi(d) = n</math>.
}}
}}

Aktualna wersja na dzień 21:47, 11 wrz 2023

Arytmetyka modularna

Liczby przystające modulo n>0 to takie dwie liczby a,b, dla których różnica ab jest wielokrotnością n. Fakt ten zapisujemy jako a nb. Innymi słowy, a nb jeśli a i b mają te same reszty w dzieleniu przez n.

Obserwacja 11.

Dla dowolnych a,b,c oraz n>0 zachodzi:

  • a na,
  • a nb wtedy i tylko wtedy, gdy b na,
  • jeśli a nb i b nc to a nc.

Powyższe własności świadczą o tym, że przystawanie n modulo n jest relacją równoważności na zbiorze . Dlatego czasem relacja ta nazywana jest równością modulo n. Okazuje się też, że relacja n jest zgodna z działaniami arytmetycznymi: dodawania, odejmowania i mnożenia, a więc jest kongruencją ze względu na te działania.

Obserwacja 11.2

Dla dowolnych a,b,c,d oraz n>0 mamy:

  • jeśli a nb i c nd, to a+c nb+d,
  • jeśli a nb i c nd, to ac nbd,
  • jeśli a nb i c nd, to ac nbd.

Podane w dwu poprzednich obserwacjach własności relacji równości modulo n pozwalają na wprowadzenie działań w zbiorze ilorazowym /n, tzn. w zbiorze klas równoważności. {[a]n:a}, poprzez:

  • [a]n+[b]n=[a+b]n,
  • [a]n[b]n=[ab]n,
  • [a]n[b]n=[ab]n,

Ponieważ w każdej klasie [a]n jest jakaś liczba spośród 0,1,2,,n1, a mianowicie reszta z dzielenia liczby a przez n, to wygodniej jest po prostu mówić o arytmetyce (modularnej) na zbiorze tych reszt {0,1,2,,n1} i pisać np.:

  • 3+5 62,
  • 35 64,
  • 35 63.

Tak więc, dla n>0 możemy zidentyfikować zbiór ilorazowy /n ze zbiorem n={0,n1} reszt modulo n. Po wprowadzeniu do tego zbioru działań arytmetycznych dostajemy pierścień, przemienny z jedynką n=({0,n1},+,). Pierścień ten nie zawsze jest jednak ciałem. Istotnie, nie zawsze możemy skracać w mnożeniu czynnik zachowując kongruencję. Dla przykładu: 22=4 610=25, ale 265. Okazuje się, że w równości modulo n możemy skracać czynniki względnie pierwsze z n.

Obserwacja 11.3 [Reguła skracania]

Dla n>0, jeśli ad nbd i dn, to a nb.

Dowód

Ponieważ NWD(d,n)=1, rozszerzony algorytm Euklidesa gwarantuje istnienie x,y takich, że xd+yn=1, czyli dx n1. Mnożąc teraz obie strony ad nbd przez x, otrzymujemy adx nbdx, czyli a=a1nadxnbdxnb1=b.

Przykład

  • 15=357105=50 oraz 57 implikuje 3710,
  • 8=2332 oraz 23 implikuje 4=2231.

Chcąc móc skracać w pierscieniu n dowolne niezerowe czynniki wymagamy, by wszystkie liczby 1,2,,n1 były względnie pierwsze z n. To nic innego, jak wymaganie, by n było liczbą pierwszą.

Obserwacja 11.4

Pierścień n=({0,n1},+,) jest ciałem, wtedy i tylko wtedy, gdy n jest liczba pierwszą.

Rozwiązywanie równań modularnych

Oczywiście w ciele, każde równanie postaci ax=b ma dokładnie jedno rozwiązanie x, o ile a0. Zobaczmy czy są, jak wyglądają i jak otrzymać rozwiązania x równania modularnego postaci axnb w liczbach całkowitych x, gdzie a,b oraz a0.

Obserwacja 11.5

Dla a,b,a0 rozwiązania równania modularnego z jedną niewiadomą x:


ax nb


zależą od wielkości NWD(a,n)=1 w następujący sposób:

  • jeśli NWD(a,n)=1,

to istnieje nieskończenie wiele rozwiązań; wszystkie one są postaci x=x0+kn, gdzie 0x0<n jest jakimś rozwiązaniem, a k,

  • jeśli NWD(a,n)=d>1,

to równanie ma rozwiązanie wtedy i tylko wtedy, gdy również d|b. W tym przypadku rozwiązania równania ax nb pokrywają się z rozwiązaniami równania adx ndbd.

Ponadto,

  • ponadto, jeśli 0a,b<n, to rozwiązanie 0x0<n

równania ax nb, lub jego brak, można wskazać wykonując O(lg3n) operacji bitowych.

Dowód

Zauważmy najpierw, że jeśli a,b są resztami z dzielenia odpowiednio a i b przez n, to rozwiązania równań ax nb i ax nb są takie same. Istotnie, wynika to natychmiast z tego, że ax nax oraz b nb. Możemy więc przyjąć, że 0a,b<n. Ponadto odnotujmy, że z tych samych powodów, jeśli x0 spełnia równanie, to spełnia je również każda liczba postaci x0+kn, gdzie k.

Załóżmy najpierw, że NWD(a,n)=1. Rozszerzony algorytm Euklidesa gwarantuje istnienie y,z takich, że 1 nya+znnya. Łatwo teraz sprawdzić, że reszta x0 z dzielenia yb przez n jest rozwiązaniem. A więc i wszystkie liczby postaci x0+kn, są również rozwiązaniami. Pozostaje pokazać, że wszystkie rozwiązania są takiej właśnie postaci. Niech więc axnbnax0. Ponieważ an, to a możemy skrócić otrzymując x nx0, co implikuje że x=x0+kn, dla pewnej liczby całkowitej k.

Niech teraz NWD(a,n)=d>1. Najpierw pokażemy, że jeśli równanie ax nb ma rozwiązanie, to d|b. Rzeczywiście, jeśli ax0 nb dla pewnego x0, to n|axb, a więc i d|axb. Ale d|a, więc d|b. Na odwrót, gdy d|b, to liczby a,b,n są podzielne przez n. Niech więc a=a/d, b=b/d i n=n/d. Wtedy NWD(a,n)=1 i, na mocy pierwszego punktu, równanie ax nb ma nieskończenie wiele rozwiązań. Pozostaje pokazać, że są to te same rozwiązania, co dla równania ax nb. Niech więc n|axb. Wtedy n=dn|d(axb)=axb. Gdy zaś ax nb, to ax=b+kn dla pewnego k. A zatem dax=db+kdn i, po wydzieleniu przez d>1, dostajemy ax=b+kn, czyli ax nb.

Na podstawie dowodu poprzednich dwu punktów wiemy więc, że by rozwiązać równanie ax nb wystarczy:

  • policzyć d:=NWD(a,n) oraz współczynniki y,z takie, że ya+zn=d,
  • jeśli d=1, to x0=ybmodn jest poszukiwanym rozwiązaniem,
  • jeśli d>1 i d|b, to równanie nie posiada rozwiązań,
  • jeśli d>1 i d|b, to ybd jest szukanym rozwiązaniem.

W pierwszym punkcie rozszerzony algorytm Euklidesa pracuje w czasie O(lg3n), bo a,b<n. W kolejnych punktach wykonywane są jedynie podstawowe operacje arytmetyczne, a więc wykonywanych jest O(lg2n) operacji bitowych. Podsumowując, aby znaleźć rozwiązanie rozważanego równania (bądź stwierdzić ich brak) wystarczy O(lg3n) operacji bitowych.

Wniosek 11.6

Jeśli p jest liczbą pierwszą, to równania postaci ax pb dla dowolnych 0<a<p i 0b<p zawsze mają rozwiązanie i można je znaleźć wykonując O(lg3p) operacji bitowych.

Przykład

Rozwiążemy równanie 3x74.

  • NWD(3,7)=1, czyli równanie ma nieskończenie wiele rozwiązań,
  • 1=1723,

czyli zbiór rozwiązań to {24+7k:k}={7k1:k}.

A następnie równanie 3x124.

  • NWD(3,12)=3, ale 3|4, czyli równanie nie ma rozwiązania.

Wreszcie rozważmy równanie 9x2112.

  • NWD(9,21)=3 oraz 3|12, czyli równanie ma nieskończenie wiele rozwiązań,
  • 3=12129,

czyli zbiór rozwiązań to {2123+213k:k}={13+7k:k}.

Czasem jedną kongruencję wygodnie jest zamienić na układ kongruencji wykorzystując następującą własność.

Obserwacja 11.7

Niech a,b,m,n, gdzie m,n>0 i mn. Wtedy a mnb jest równoważne temu, że równocześnie a mb i a nb.

Dowód

Jeśli a mnb, to mn|ab. A więc oczywiście m|ab i n|ab, co jest równoważne z a mb i a nb. Dla dowodu implikacji odwrotnej, że jest ona trywialna dla a=b i wobec tego przyjmijmy (bez straty ogólności), że a>b. Załóżmy też, że m|ab i n|ab. Ponieważ mn, to rozkłady liczb m i n nie mają wspólnych czynników pierwszych. Natomiast rozkład ab musi zawierać wszystkie liczby pierwsze z rozkładów m i n w odpowiednio wysokich potęgach. To dowodzi, iż mn|ab, czyli a mnb.

Poprzednia obserwacja prowadzi do twierdzenia powszechnie znanego jako Chińskie Twierdzenie o Resztach. Udowodnił je chiński matematyk Sun Tzu w III wieku n.e. ( nie mylić z Sun Tzu, myślicielem, filozofem, autorem Sztuki wojny).

Twierdzenie 11.7 [Chińskie twierdzenie o resztach]

Niech n1,,nk{0} będą parami względnie pierwsze, tzn. ninj dla ij. Wtedy dla dowolnych a1,,ak istnieje dokładnie jedna liczba 0x<n1nk taka, że:


xn1a1,xn2a2,xnkak.


Dowód

Niech N=n1nk. Dla liczby a rozważmy ciąg a=(a1,,ak) reszt z dzielenia a odpowiednio przez n1,,nk.

Niech teraz 0a<b<N. Gdyby a=b, to


an1b,an2b,ankb.


Z drugiej strony n1nini+1, więc stosując wielokrotnie Obserwację 11.7 otrzymujemy i Nj, czyli N|ji, co jest niemożliwe wobec 0<ji<N. Sprzeczność ta pokazuje, że liczby ze zbioru {0,1,,N1} mają różne ciągi reszt. Oznacza to, że ciągów postaci a jest dokładnie N, czyli tyle ile wszystkich możliwych ciągów w n1××nk. Tym samym przyporządkowanie Naan1××nk jest bijekcją, co kończy dowód twierdzenia.

Chińskie Twierdzenie o Resztach podaje warunki wystarczające na istnienie rozwiązania układu równań modularnych (1). Nie podaje jednak metody jego uzyskania.

Konstrukcja rozwiązania.

Niech Nj=N/nj, czyli Nj jest iloczynem wszystkich ni poza nj. Oczywiście, NWD(ni,Ni)=1. Rozszerzony algorytm Euklidesa pozwala więc znaleźć liczby xi takie, że Nixi ni1. Połóżmy


x=i=1kaixiNi


Wtedy ni dzieli wszystkie czynniki sumy poza i-tym, ponieważ ni|Nj dla ji. A więc, dla dowolnego i mamy:


xniaixiNiniai1=ai


To oznacza, że x jest rozwiązaniem układu równań modularnych (1).

Oszacujmy czas działania tego algorytmu. Niech l1,,lk będą długościami odpowiednio n1,,nk. Wtedy N ma długość co najwyżej l=l1++lk. Kroki algorytmu można wykonać kolejno w czasie:

  • O(kl) na wyliczenie wszystkich iloczynów postaci Ni oraz całego iloczynu N,
  • O(kl3) na wyliczenie kolejnych współczynników xi, czyli k-krotną aplikację rozszerzonego algorytmu Euklidesa dla liczb ni,NiN,
  • O(kl2) na obliczenie x, czyli O(k) mnożeń i dodawań.

Podsumowując wszystkie kroki zostaną wykonane w czasie O(klg3N).

Przykład

Rozważmy układ równań:


x32,x107,x1110,x71.


  • NWD(3,10)=NWD(3,11)=NWD(3,7)=NWD(10,11)=NWD(10,7)=NWD(11,7)=1,

czyli możemy zaaplikować Chińskie Twierdzenie o Resztach,

  • N=371011=2310,
  • N1=23103=770,
  • N2=231010=231,
  • N3=231011=210,
  • N4=23107=330.

Zgodnie z procedurą czterokrotnie używamy rozszerzonego algorytmu Euklidesa otrzymując x1,,x4:

  • NWD(3,770)=1=25731770, x1=132,
  • NWD(10,231)=1=2310+1231, x2=1,
  • NWD(11,210)=1=1911+1210, x3=1,
  • NWD(7,330)=1=477+1330, x4=1.

Pozostaje policzyć x:


x=22770+71231+101210+11330=3080+1617+2100+330=71272310197.


A więc 197 jest najmniejszym dodatnim rozwiązaniem naszego układu równości.

Przykład

Rozważmy jeszcze jeden układ równań:


x20,x1312,x152.
  • NWD(2,13)=NWD(2,15)=NWD(13,15)=1,

czyli możemy zaaplikować Chińskie Twierdzenie o Resztach,

  • N=21315=390,
  • N1=3902=195,
  • N2=39013=30,
  • N3=39015=26,
  • NWD(2,195)=1=972+1195, x1=1,
  • NWD(13,30)=1=713330, x2=31310,
  • NWD(15,26)=1=715426, x3=41511.

Pozostaje nam obliczenie x:


x=01195+121030+22611=4172390=272.


Zatem 272 jest najmniejszym dodatnim rozwiązaniem naszego układu równań.

Potęgowanie modularne

Potęgowanie modularne. Naszym celem jest policzenie


abmodn


Oczywiście, możemy założyć, że 0a<n, bo inaczej najpierw można policzyć resztę a z dzielenia a przez n, a dopiero potem (a)bmodn, jako że (a)bmodn=abmodn. Zauważmy, że w przeciwieństwie do zwykłego potęgowania wynik nigdy nie przekracza n, czyli nie rośnie wykładniczo w stosunku do a. Pozwala to żywić nadzieję na szybsze algorytmy potęgujące. Dla rozgrzewki przeanalizujmy najpierw naiwny sposób liczenia potęgi modulo:

  • Naiwne potęgowanie modulo. Wymnóż a przez siebie b-krotnie, po każdym mnożeniu weź resztę modulo n. Branie reszty po każdym mnożeniu, utrzymuje tymczasowy iloczyn w zbiorze {0,,n1}. Zatem wykonywanych jest b mnożeń liczb O(logn)-bitowych, czyli wykonywanych jest O(blog2n) operacji bitowych. Jest to zatem algorytm działający w czasie wykładniczym względem rozmiaru wejścia O(logb+logn).
  • Szybkie potęgowanie modulo. Niech b=(bk1b0)2 będzie binarnym zapisem liczby b. Zauważmy, że abmodn=i=0k1abi2imodn.

Policzmy zatem w następujacy sposób kolejne potęgi a występujące w iloczynie:


aamodnna2modn,(a2modn)(a2modn)na4modn,(a2k2modn)(a2k2modn)na2k1modn.


Tym sposobem wykonanych zostanie k2 mnożeń i dzieleń liczb O(logn)-bitowych, czyli O(klog2n) operacji bitowych. Aby otrzymać wynik musimy jeszcze wymnożyć przez siebie te potęgi, ktorym odpowiada bit 1 w liczbie b. Wykonanych zostanie więc jeszcze co najwyżej k mnożeń (które przeplatamy braniem reszty modulo n) liczb O(logn)-bitowych.

W sumie wykonanych zostanie O(klog2n)=O(logblog2n) operacji bitowych, a więc znacznie mniej niż sposobem naiwnym. Przedstawiony algorytm jest efektywny (wielomianowy względem długości wejścia).

Przykład


712mod10=?
  • 12=(1100)2,
  • wyznaczamy wybrane potęgi 7 modulo 10:
    • 72=49109,
    • 741099=81101,
    • 781011=1,
  • 712=78741011=1.
  • wykonane zostały tylko 4 mnożenia!

Przykład


351mod13=?
  • 51=(110011)2,
  • wyznaczamy wybrane potęgi 3 modulo 13:
    • 32=9,
    • 34=99=81133,
    • 381333=9,
    • 3161399=81133,
    • 3321333=9.
  • 351=3323163231139393=729131.

Małe Twierdzenia Fermata

Małego Twierdzenia Fermata. nie należy mylić z tzw. Wielkim Twierdzeniem Fermata, które frapowało matematyków przez wiele stuleci i zostało ostatecznie udowodnione przez Andrew Wiles'a w 1994 roku.

Zgodnie ze swoim zwyczajem, podobnie jak i w przypadku Wielkiego Twierdzenia, Fermat przedstawił Małe Twierdzenie, nie podając dowodu. List, w którym się po raz pierwszy pojawiła ta teza, później nazwana Małym Twierdzeniem Fermata, został napisany dnia 18.IX.1640. Fermat dodał komentarz: "Propozycja ta jest prawdziwa dla wszystkich liczb pierwszych; jej dowód prześlę Ci, jeśli nie będzie zbyt długi". Pierwszy znany dowód tego twierdzenia przedstawił Leibniz w 1683 roku.

Twierdzenie 11.9 [Małe Twierdzenie Fermata]

Dla dowolnej p liczby pierwszej i dowolnego a zachodzi:


ap pa


Dowód

Poznamy trzy różne dowody. Najpierw jednak zauważmy, że bez straty ogólności możemy przyjąć iż a{0,,p1}, gdyż w miejsce a możemy rozważać resztę z dzielenia a przez p. Ponadto, zwróćmy uwagę, iż dla a=0 teza jest oczywista, natomiast dla a{1,,p1} wystarczy udowodnić, że:


ap1 p1


Pierwszy dowód. Dla a{1,,p1} rozważmy ciąg


a0,a1,a2,,ap1


reszt ak=kamodp liczb ka modulo p. Pokażemy, że żadna wartość w tym ciągu się nie powtarza. Niech 0i<j<p i, dla dowodu niewprost, niech


ia pja


Wtedy p|(ji)a. Ponieważ p jest liczba pierwszą to p|ji lub p|a. Ponieważ jednak obie liczby a oraz ji leżą w zbiorze {1,2,,p1}, żaden z tych dwu przypadków nie jest możliwy. A zatem {a0,a1,a2,,ap1}={0,1,2,,p1}. Oczywiście a0=0, więc iloczyny pozostałych elementów w tych dwu zbiorach muszą być równe, co daje:


a2a(p1)apa1a2ap1=12(p1),


lub inaczej:


(p1)!ap1p(p1)!


Ponieważ p jest liczbą pierwszą, wszystkie liczby ze zbioru {1,,p1} są względnie pierwsze z p, więc i (p1)!p. Można więc zastosować regułę skracania:


ap1 p1


Drugi dowód. Dla dowodu indukcyjnego względem a=0,1,2,,p1 zauważmy najpierw, że w oczywisty sposób 0p p0 oraz 1p p1 i załóżmy, że kp pk. Aby udowodnić, że:


(k+1)p pk+1


pokażemy znacznie mocniejszą równość


(x+y)p pxp+yp,


która przy x=k i y=1 pozwoli zakończyć dowód indukcyjny.

Rozwijając dwumian (x+y)p mamy:


(x+y)p=i=0p(pi)xiypi


Współczynnik (pi)=p!i!(pi)! jest zawsze liczbą całkowitą. Ponadto, jeśli 0<i<p, to wszystkie czynniki obu silni mianownika są względnie pierwsze z p, bo p jest pierwsza, a czynniki te są mniejsze niż p. Oznacza to, iż w rozkładzie (pi) na czynniki pierwsze musi znaleźć się p. To zaś implikuje (pi) p0 dla 0<i<p. A więc


(x+y)p=i=0p(pi)xiypipi{0,p}(pi)xiypi=xp+yp


Trzeci dowód. Niech a{1,,p1}.

Rozważmy słowa długości p nad alfabetem a-elementowym.

Przykład

Niech p=7, a=3. Symbolami alfabetu niech będą A,B,C.

Oto mocno skrócona lista 37=2187 wszystkich słów 7-literowych nad tym alfabetem.


AAAAAAA, AAAAAAB, AAAAAAC, AAAAABA, AAAAABB,
AAAAABC, AAAAACA, AAAAACB, AAAAACC, ...
...
CCCCCBB, CCCCCBC, CCCCCCA, CCCCCCB, CCCCCCC.


Wszystkich takich słów jest ap. Pokażemy, że po usunięciu słów jednoliterowych, pozostałe apa słów będzie można podzielić na rozłączne p-elementowe grupy. To oczywiście natychmiast da p|apa, czyli pożądaną równość ap pa.

Słowo v nazwiemy przesunięciem cyklicznym słowa w=w1wk o i liter, jeśli


v=wi+1wi+2wkw1wi1wi


Przykład

Przesunięcia cykliczne słowa CBAABCB:


CBAABCB, BAABCBC, AABCBCB, ABCBCBA, BCBCBAA,
CBCBAAB, BCBAABC.


Przesunięcia cykliczne słowa ABCABC:


ABCABC, BCABCA, CABCAB.


Drugi przykład pokazuje, że niektóre przesuniecia cyklicze sa równe. W istocie mamy:

Lemat 11.10

Niech v będzie słowem, którego nie da się przedstawić jako ul=uu, dla żadnego słowa u i żadnej liczby l>0. Z kolei niech w=vk=vv, dla pewnego k>0. Wtedy słowo w ma dokładnie |v| różnych przesunięć cyklicznych.

Dowód

Oczywiście, jeśli liczba liter, o które różnią się dwa przesunięcia cykliczne jest wielokrotnością długousi słowa v, to te dwa przesunięcia dają to samo słowo. A zatem w ma co najwyżej |v| różnych przesunięć cyklicznych. Z drugiej strony, gdyby dwa przesunięcia cykliczne słowa v były równe, to dawałyby to samo słowo. Istotnie, gdy v=v1vm i v1,,vm są literami alfabetu, to każde przesunięcie cykliczne prowadzi do jednego ze słów z listy:


v1v2v3vmvk1,v2v3vmvk1v1,v3vmvk1v1v2,vmvk1v1vm1.


Ponieważ |v|=m, pozostaje pokazać, że słowa na tej liście sa różne. Dla dowodu niewprost, bez straty ogólności, możemy założyć, że:


v1vmvk1=vivmvk1v1v2vi1,


dla pewnego 1<im. Wtedy


v1vm=vivmv1vi1


To z kolei prowadzi do ciągu równości w poniższym diagramie:


v1vm(i1)vm(i1)+1vm2(i1)vm2(i1)+1vm3(i1)vivmv1vm(i1)vm(i1)+1vm2(i1)


Czyli słowo v jest postaci v=xl dla x=vivm i l=mm(i1), wbrew założeniom lematu.

Wyposażeni w Lemat, możemy powrócić do trzeciego dowodu Małego Twierdzenia Fermata. Niech więc w będzie słowem, w którym występują dwie różne litery alfabetu. Słowo to nie może być postaci vl, gdzie l2, gdyż inaczej |v||p, a skoro p jest liczbą pierwszą, to |v|=1 lub |v|=p=|w|. W pierwszym przypadku w jest jednoliterowe, a w drugim v=w i l=1. A zatem każde z apa słów w ma dokładnie p różnych przesunięć cyklicznych. To dowodzi, iż p|apa, czyli ap pa.

W jednym z dalszych wykładów poznamy jeszcze jeden dowód Małego Twierdzenia Fermata, oparty na elementarnej wiedzy z teorii grup.

Potęgowanie modulo liczba pierwsza.

Wykorzystując Małe Twierdzenie Fermata możemy trochę poprawić szybkość potęgowania modularnego. Asymptotycznie jednak złożoność pozostanie taka sama. Zauważmy bowiem, że:

abpab,

gdzie b jest resztą z dzielenia b przez p1.

Przykład

Policzmy 7126mod11.

  • 11 jest liczba pierwszą, czyli możemy skorzystać z Małego Twierdzenia Fermata,
  • 126mod10=6,
  • 71261176,
  • 6=(110)2,
  • liczymy wybrane potęgi 7 modulo 11:
    • 72=49115,
    • 741155=25114.
  • 71271176=74721145=20119.
  • wykonaliśmy 3 mnożenia.

Twierdzenie Eulera

Poznamy teraz uogólnienie Małego Twierdzenia Fermata pochodzące od Eulera. Uogólnienie to leży u podstaw znanego systemu kryptograficznego - RSA. Potrzebne nam będzie funkcja zliczające liczby względnie pierwsze z liczbą n.

Funkcja φ-Eulera to φ:{0} zdefiniowaną poprzez


φ(n)=|{1a<n:NWD(a,n)=1}|


Obserwacja 11.11

Dla dowolnej liczby pierwszej p zachodzi:

  • φ(p)=p1,
  • φ(pα)=pαpα1=pα(11p).

Dowód

Ponieważ p jest pierwsza, liczby 1,2,,p1 są z nią względnie pierwsze, co dowodzi pierwszego punktu. Dla dowodu punktu drugiego zauważmy najpierw, że jedynie wielokrotności liczby p mają nietrywialny wspólny dzielnik z pα. Wielokrotności tych w przedziale [1,pα] jest dokładnie pα1, stąd φ(pα)=pαpα1.

Obserwacja 11.12

Dla dowolnych m,n>0 takich, że mn zachodzi


φ(mn)=φ(m)φ(n)


Dowód

Z Chińskiego Twierdzenia o Resztach wiemy, iż każda liczba z przedziału [0,,mn1] jest jednoznacznie wyznaczona przez jej reszty modulo m i modulo n. Wiemy także, że dla dowolnego a:


NWD(a,mn)=1 wtedy i tylko wtedy, gdy NWD(a,m)=1=NWD(a,n).


To oznacza, iż liczb 0a<mn takich, że amn jest dokładnie tyle co par (i1,i2) takich, że 0i1<m, 0i2<n oraz i1m, i2n.

Wniosek 11.13

Jeśli n=p1α1p2α2pkαk jest rozkładem na liczby pierwsze pi, w którym αi1, to:


φ(n)=φ(p1α1)φ(pkαk)=p1α1(11p1)p2α2(11p2)pkαk(11pk)=np|n(11p),


gdzie ostatnim iloczyn przebiega po wszystkich liczbach pierwszych p dzielących n.

Przykład

Policzmy φ(2006):

  • 2006=21759,
  • φ(2006)=2006(112)(1117)(1159)=928.

Oraz φ(1980):

  • 1980=2232511,
  • φ(1980)=1980(112)(113)(115)(1111)=480.

Twierdzenie 11.14 [Euler 1736]

Dla dowolnych a,n, gdzie NWD(a,n)=1 zachodzi:


aφ(n) n1


Dowód

Zmodyfikujmy pierwszy z poznanych dowodów Małego Twierdzenia Fermata. Niech m1<m2<<mφ(n) będą wszystkimi liczbami względnie pierwszymi z n i niewiększymi od n. Rozważmy ciąg


a1,a2,,aφ(n)


reszt ai=miamodn liczb mia modulo n. Pokażemy, że żadna wartość w tym ciągu się nie powtarza. Niech 1i<jφ(n) i, dla dowodu niewprost, niech


mia nmja


Wtedy n|(mjmi)a, a ponieważ na, to n|mjmi, co jest niemożliwe wobec 0<mjmi<n.

Ponadto pokażmy, że każde ai jest względnie pierwsze z n. Załóżmy zatem, że d|ai oraz d|n. Ponieważ ai=miaqn dla pewnego q, to d|mia. Z drugiej strony d|n, nmi i na, co daje dm i da. A więc d=1, czyli w istocie ain.

Wiemy więc, że liczby a1,,aφ(n) przyjmują wszystkie wartości m1,,mφ(n) i każdą tylko raz. A zatem


m1am2amφ(n)ana1a2aφ(n)=m1m2mφ(n)


Ponieważ liczby m1,,mφ(n) są względnie pierwsze z n możemy zastosować regułę skracania, by dostać


aφ(m) n1


Zastosowanie Twierdzenia Eulera do szybkiego potęgowania.

Twierdzenie Eulera, tak jak uprzednio Twierdzenie Fermata, możemy wykorzystać do przyspieszenia potęgowania modularnego. Wymaga to jednak, by podstawa potęgi była względnie pierwsza z modułem n. Jest to istotnie słabszy warunek, niż ten wymagany przez Małe Twierdzenie Fermata. Zwracamy jednak uwagę, że aby zastosować Twierdzenie Eulera musimy w szczególności znać wartość funkcji φ dla modułu n. Jak się przekonamy podczas poznawania algorytmu RSA, wartość φ(n) jest jednak jest tak trudna do policzenia, jak rozkład n na czynniki pierwsze.

Przykład

Spróbujmy policzyć 13101mod16.

  • 1316, czyli możemy skorzystać z Twierdzenia Eulera,
  • φ(16)=8,
  • 101mod8=5,
  • 1310116135,
  • 5=(101)2,
  • liczymy wybrane potęgi 13 modulo 16:
    • 1311613,
    • 132161313=169169,
    • 1341699=81161.
  • 1310116135=13413116113=13.

Funkcja Mobiusa

Choć Wniosek 11.13 wyprowadziliśmy już bezpośrednio z Obserwacji 11.11 i 11.12, na zakończenie tego wykładu przedstawimy jego alternatywny dowód. Metoda użyta w tym alternatywnym dowodzie będzie przydatna w kilku innych sytuacjach.

Dowód

Niech n=p1α1p2α2pkαk będzie rozkładem na liczby pierwsze pi, w którym αi1. Zdefiniujmy Ai jako zbiór wielokrotności liczby pi w {1,,n1}. Wtedy φ(n)=n|A1Ak|. Korzystając z Zasady Włączania i Wyłączania otrzymujemy


φ(n)=n|A1Ak|=nα1+α2+(1)kαk,


gdzie αi=1j1<<jik|Aj1Aji|. Zauważmy, że zbiór Aj1Aji składa się z wielokrotności liczby P=pj1pjk, czyli liczb P,2P,,(nP)P. Zatem |Aj1Aji|=nP=npi1pji, skąd


αi=1j1<<jiknpj1pji=n1j1<<jik1pj1pji


Teraz łatwo już policzyć


φ(n)=nα1+α2α3++(1)kαk=nn(1p1+1p2++1pk)+n(1p1p2+1p1p3+)+n(1)k1p1pk(*)=n(11p1)(11pk).


Przyjrzyjmy się temu dowodowi trochę dokładniej. Analizując ostatnią sumę dla n=60=2235 mamy


φ(60)=601(602+603+605)+(606+6010+6015)6030


Po prawej stronie mamy naprzemienną sumę składników nd, gdzie d przebiega kolejne dzielniki liczby n, będące iloczynem różnych liczb pierwszych. Czynnik jest dodawany, jeśli d jest iloczynem parzystej liczby liczb pierwszych i odejmowany, jeśli d jest iloczynem nieparzystej liczby liczb pierwszych. Zależność tę możemy ogólniej zapisać w postaci


φ(n)=d|nμ(d)nd,


gdzie μ(d) zadana jest przez:


μ(d)={1,jeśli d=1,(1)k,jeśli djest iloczynem króżnych liczb pierwszych,0,jeśli w rozkładzie dktóryś z czynników się powtarza.


Funkcja μ(d) jest znana jako funkcja Mobiusa, na cześć niemieckiego matematyka Augusta Ferdynanda Mobiusa, który jako pierwszy użył jej w 1831 roku. Funkcja Mobiusa pojawia się nieoczekiwanie w wielu rozważaniach Matematyki Dyskretnej. Pojawi się też i u nas w wykładach poświęconych teorii grup i teorii ciał.

Obserwacja 11.15

Dla dowolnego n2 mamy d|nμ(d)=0

Dowód

Niech n=p1α1pkα. Wtedy każdy dzielnik d liczby n ma rozkład d=p1β1pkβk, gdzie 0βiαi. Jeśli choć jedno βi>1, to μ(d)=0. Rozważmy więc tylko te dzielniki dla których βi{0,1}. Każdy taki dzielnik wyznacza jednoznacznie pewien podzbiór zbioru {1,,k}, przy czym wartościom d, dla których μ(d)=1 odpowiadają podzbiory o parzystej liczbie elementów, a wartościom d, dla których μ(d)=1 odpowiadają podzbiory o nieparzystej liczbie elementów. A zatem:


d|nμ(d)=1(k1)+(k2)+(1)k(kk)=0


Obserwacja 11.16 [wzór inwersyjny Mobiusa]

Dla dowolnych funkcji f,g:, jeśli f(n)=d|ng(d), to g(n)=d|nμ(d)f(nd).

Dowód

Ponieważ


f(n)=d|ng(d),


to


d|nμ(d)f(nd)=d|nμ(d)c|ndg(c)=d|n,c|ndμ(d)g(c).


Zauważmy, iż {(c,d):d|n,c|nd}={(c,d):c|n,d|nc}. Zatem


d|nμ(d)f(nd)=c|n,d|ncμ(d)g(c)=c|ng(c)d|ncμ(d).


Z Obserwacji 11.15 wiemy, że wewnętrze sumy zerują się dla wszystkich nc2. Zatem jedyny interesujący składnik zewnętrznej sumy dostajemy przy c=n:


d|nμ(d)f(nd)=c|ng(c)d|ncμ(d)=g(n)d|1μ(d)=g(n)μ(1)=g(n).


Jako ćwiczenie pozostawiamy użycie wzoru inwersyjnego Mobiusa do wyprowadzenia następującego wniosku:

Wniosek 11.17

d|nφ(d)=n.