Matematyka dyskretna 1/Wykład 11: Teoria liczb II: Różnice pomiędzy wersjami
Nie podano opisu zmian |
|||
Linia 7: | Linia 7: | ||
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: | ||
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: | ||
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>. | ||
}} | }} | ||
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: | zależą od wielkości <math>\mbox{\sf NWD}(a,n)=1</math> w następujący sposób: | ||
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 | ||
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 | ||
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>. | ||
Wtedy dla dowolnych <math>a_1,\ldots,a_k</math> | Wtedy dla dowolnych <math>a_1,\ldots,a_k</math> | ||
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 \\ | <center><math>\aligned x&\equiv_{n_1}&a_1,\nonumber \\ | ||
Linia 252: | Linia 252: | ||
x&\equiv_{n_k}&a_k.\nonumber | x&\equiv_{n_k}&a_k.\nonumber | ||
\endaligned</math></center> | \endaligned</math></center> | ||
}} | }} | ||
Linia 261: | Linia 262: | ||
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>\aligned a&\equiv_{n_1}&b,\\ | ||
Linia 268: | Linia 270: | ||
\endaligned</math></center> | \endaligned</math></center> | ||
Z drugiej strony <math>n_1\ldots n_i \perp n_{i+1}</math>, więc stosując wielokrotnie | |||
Z drugiej strony <math>n_1\ldots n_i \perp n_{i+1}</math>, więc stosując wielokrotnie | |||
[[#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>. | 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> | ||
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 ( | na istnienie rozwiązania układu równań modularnych (1). | ||
Nie podaje jednak metody jego uzyskania. | Nie podaje jednak metody jego uzyskania. | ||
Linia 293: | Linia 296: | ||
Połóżmy | Połóżmy | ||
<center><math>x=\sum_{i=1}^k a_i x_i N_i. | |||
<center><math>\displaystyle x=\sum_{i=1}^k a_i x_i N_i. | |||
</math></center> | </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, | ||
ponieważ <math>n_i|N_j</math> dla <math>j\neq i</math>. | ponieważ <math>n_i|N_j</math> dla <math>j\neq i</math>. | ||
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. | <center><math>x\equiv_{n_i}a_ix_iN_i\equiv_{n_i} a_i \cdot 1 =a_i. | ||
</math></center> | </math></center> | ||
To oznacza, że <math>x</math> jest rozwiązaniem układu równań modularnych ( | |||
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 317: | ||
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 322: | Linia 327: | ||
{{przyklad||| | {{przyklad||| | ||
Rozważmy układ równań: | Rozważmy układ równań: | ||
<center><math>\aligned x&\equiv_3& 2,\\ | <center><math>\aligned x&\equiv_3& 2,\\ | ||
Linia 328: | Linia 334: | ||
x&\equiv_7& 1. | x&\equiv_7& 1. | ||
\endaligned</math></center> | \endaligned</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>\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, | ||
Linia 353: | Linia 360: | ||
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>\aligned x&=2\cdot2\cdot770+7\cdot1\cdot231+10\cdot1\cdot210+1\cdot1\cdot330\\ | ||
Linia 358: | Linia 366: | ||
&=7127\equiv_{2310} 197. | &=7127\equiv_{2310} 197. | ||
\endaligned</math></center> | \endaligned</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 364: | Linia 373: | ||
{{przyklad||| | {{przyklad||| | ||
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>\aligned x&\equiv_2&0,\\ | ||
Linia 388: | Linia 398: | ||
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. | <center><math>\aligned x&=0\cdot1\cdot195+12\cdot10\cdot30+2\cdot26\cdot11=4172\equiv_{390}=272. | ||
\endaligned</math></center> | \endaligned</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ń. |
Wersja z 17:52, 11 wrz 2006
Arytmetyka modularna
Liczby przystające modulo to takie dwie liczby , dla których różnica jest wielokrotnością . Fakt ten zapisujemy jako . Innymi słowy, jeśli i mają te same reszty w dzieleniu przez .
Obserwacja 11.
Dla dowolnych oraz zachodzi:
- ,
- wtedy i tylko wtedy, gdy ,
- jeśli i to .
Powyższe własności świadczą o tym, że przystawanie modulo jest relacją równoważności na zbiorze . Dlatego czasem relacja ta nazywana jest równością modulo . Okazuje się też, że relacja 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 oraz mamy:
- jeśli i , to ,
- jeśli i , to ,
- jeśli i , to .
Podane w dwu poprzednich obserwacjach własności relacji równości modulo pozwalają na wprowadzenie działań w zbiorze ilorazowym , tzn. w zbiorze klas równoważności. , poprzez:
- ,
- ,
- ,
Ponieważ w każdej klasie jest jakaś liczba spośród , a mianowicie reszta z dzielenia liczby przez , to wygodniej jest po prostu mówić o arytmetyce (modularnej) na zbiorze tych reszt i pisać np.:
- ,
- ,
- .
Tak więc, dla możemy zidentyfikować zbiór ilorazowy ze zbiorem reszt modulo . Po wprowadzeniu do tego zbioru działań arytmetycznych dostajemy pierścień, przemienny z jedynką . 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: , ale . Okazuje się, że w równości modulo możemy skracać czynniki względnie pierwsze z .
Obserwacja 11.3 [Reguła skracania]
Dla , jeśli i , to .
Dowód
Ponieważ Parser nie mógł rozpoznać (błąd składni): {\displaystyle \mbox{\sf NWD}(d,n)=1} , rozszerzony algorytm Euklidesa gwarantuje istnienie takich, że , czyli . Mnożąc teraz obie strony przez , otrzymujemy , czyli .

Przykład
- oraz implikuje ,
- oraz implikuje .
Chcąc móc skracać w pierscieniu dowolne niezerowe czynniki wymagamy, by wszystkie liczby były względnie pierwsze z . To nic innego, jak wymaganie, by było liczbą pierwszą.
Obserwacja 11.4
Pierścień jest ciałem, wtedy i tylko wtedy, gdy jest liczba pierwszą.
Rozwiązywanie równań modularnych
Oczywiście w ciele, każde równanie postaci ma dokładnie jedno rozwiązanie , o ile . Zobaczmy czy są, jak wyglądają i jak otrzymać rozwiązania równania modularnego postaci w liczbach całkowitych , gdzie oraz .
Obserwacja 11.5
Dla rozwiązania równania modularnego z jedną niewiadomą :
zależą od wielkości Parser nie mógł rozpoznać (błąd składni): {\displaystyle \mbox{\sf NWD}(a,n)=1}
w następujący sposób:
- jeśli Parser nie mógł rozpoznać (błąd składni): {\displaystyle \mbox{\sf NWD}(a,n)=1} ,
to istnieje nieskończenie wiele rozwiązań; wszystkie one są postaci , gdzie jest jakimś rozwiązaniem, a ,
- jeśli Parser nie mógł rozpoznać (błąd składni): {\displaystyle \mbox{\sf NWD}(a,n)=d>1} ,
to równanie ma rozwiązanie wtedy i tylko wtedy, gdy również . W tym przypadku rozwiązania równania pokrywają się z rozwiązaniami równania .
Ponadto,
- ponadto, jeśli , to rozwiązanie
równania , lub jego brak, można wskazać wykonując operacji bitowych.
Dowód
Zauważmy najpierw, że jeśli są resztami z dzielenia odpowiednio i przez , to rozwiązania równań i są takie same. Istotnie, wynika to natychmiast z tego, że oraz . Możemy więc przyjąć, że . Ponadto odnotujmy, że z tych samych powodów, jeśli spełnia równanie, to spełnia je również każda liczba postaci , gdzie .
Załóżmy najpierw, że Parser nie mógł rozpoznać (błąd składni): {\displaystyle \mbox{\sf NWD}(a,n)=1} . Rozszerzony algorytm Euklidesa gwarantuje istnienie takich, że . Łatwo teraz sprawdzić, że reszta z dzielenia przez jest rozwiązaniem. A więc i wszystkie liczby postaci , są również rozwiązaniami. Pozostaje pokazać, że wszystkie rozwiązania są takiej właśnie postaci. Niech więc . Ponieważ , to możemy skrócić otrzymując , co implikuje że , dla pewnej liczby całkowitej .
Niech teraz Parser nie mógł rozpoznać (błąd składni): {\displaystyle \mbox{\sf NWD}(a,n)=d>1} . Najpierw pokażemy, że jeśli równanie ma rozwiązanie, to . Rzeczywiście, jeśli dla pewnego , to , a więc i . Ale , więc . Na odwrót, gdy , to liczby są podzielne przez . Niech więc , i . Wtedy Parser nie mógł rozpoznać (błąd składni): {\displaystyle \mbox{\sf NWD}(a',n')=1} i, na mocy pierwszego punktu, równanie ma nieskończenie wiele rozwiązań. Pozostaje pokazać, że są to te same rozwiązania, co dla równania . Niech więc . Wtedy . Gdy zaś , to dla pewnego . A zatem i, po wydzieleniu przez , dostajemy , czyli .
Na podstawie dowodu poprzednich dwu punktów wiemy więc, że by rozwiązać równanie wystarczy:
- policzyć Parser nie mógł rozpoznać (błąd składni): {\displaystyle d:=\mbox{\sf NWD}(a,n)} oraz współczynniki takie, że ,
- jeśli , to Parser nie mógł rozpoznać (błąd składni): {\displaystyle x_0 =yb \mbox{ {\sf mod} } n } jest poszukiwanym rozwiązaniem,
- jeśli i , to równanie nie posiada rozwiązań,
- jeśli i , to jest szukanym rozwiązaniem.
W pierwszym punkcie rozszerzony algorytm Euklidesa pracuje w czasie , bo . W kolejnych punktach wykonywane są jedynie podstawowe operacje arytmetyczne, a więc wykonywanych jest operacji bitowych. Podsumowując, aby znaleźć rozwiązanie rozważanego równania (bądź stwierdzić ich brak) wystarczy operacji bitowych.

Wniosek 11.6
Jeśli jest liczbą pierwszą, to równania postaci dla dowolnych i zawsze mają rozwiązanie i można je znaleźć wykonując operacji bitowych.
Przykład
Rozwiążemy równanie .
- Parser nie mógł rozpoznać (błąd składni): {\displaystyle \mbox{\sf NWD}(3,7)=1} , czyli równanie ma nieskończenie wiele rozwiązań,
- ,
czyli zbiór rozwiązań to .
A następnie równanie .
- Parser nie mógł rozpoznać (błąd składni): {\displaystyle \mbox{\sf NWD}(3,12)=3} , ale , czyli równanie nie ma rozwiązania.
Wreszcie rozważmy równanie .
- Parser nie mógł rozpoznać (błąd składni): {\displaystyle \mbox{\sf NWD}(9,21)=3} oraz , czyli równanie ma nieskończenie wiele rozwiązań,
- ,
czyli zbiór rozwiązań to .
Czasem jedną kongruencję wygodnie jest zamienić na układ kongruencji wykorzystując następującą własność.
Obserwacja 11.7
Niech , gdzie i . Wtedy jest równoważne temu, że równocześnie i .
Dowód
Jeśli , to . A więc oczywiście i , co jest równoważne z i . Dla dowodu implikacji odwrotnej, że jest ona trywialna dla i wobec tego przyjmijmy (bez straty ogólności), że . Załóżmy też, że i . Ponieważ , to rozkłady liczb i nie mają wspólnych czynników pierwszych. Natomiast rozkład musi zawierać wszystkie liczby pierwsze z rozkładów i w odpowiednio wysokich potęgach. To dowodzi, iż , czyli .

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 będą parami względnie pierwsze, tzn. dla . Wtedy dla dowolnych istnieje dokładnie jedna liczba taka, że:
Dowód
Niech . Dla liczby rozważmy ciąg reszt z dzielenia odpowiednio przez .
Niech teraz . Gdyby , to
Z drugiej strony , więc stosując wielokrotnie
Obserwację 11.7
otrzymujemy , czyli , co jest niemożliwe wobec .
Sprzeczność ta pokazuje, że liczby ze zbioru
mają różne ciągi reszt.
Oznacza to, że ciągów postaci jest dokładnie ,
czyli tyle ile wszystkich
możliwych ciągów w .
Tym samym przyporządkowanie
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 , czyli jest iloczynem wszystkich poza . Oczywiście, Parser nie mógł rozpoznać (błąd składni): {\displaystyle \mbox{\sf NWD}(n_i,N_i)=1} . Rozszerzony algorytm Euklidesa pozwala więc znaleźć liczby takie, że . Połóżmy
Wtedy dzieli wszystkie czynniki sumy poza -tym,
ponieważ dla .
A więc, dla dowolnego mamy:
To oznacza, że jest rozwiązaniem układu równań modularnych (1).
Oszacujmy czas działania tego algorytmu. Niech będą długościami odpowiednio . Wtedy ma długość co najwyżej . Kroki algorytmu można wykonać kolejno w czasie:
- na wyliczenie wszystkich iloczynów postaci oraz całego iloczynu ,
- na wyliczenie kolejnych współczynników , czyli -krotną aplikację rozszerzonego algorytmu Euklidesa dla liczb ,
- na obliczenie , czyli mnożeń i dodawań.
Podsumowując wszystkie kroki zostaną wykonane w czasie .
Przykład
Rozważmy układ równań:
- Parser nie mógł rozpoznać (błąd składni): {\displaystyle \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} , czyli możemy zaaplikować Chińskie Twierdzenie o Resztach,
- ,
- ,
- ,
- ,
- .
Zgodnie z procedurą czterokrotnie używamy rozszerzonego algorytmu Euklidesa otrzymując :
- Parser nie mógł rozpoznać (błąd składni): {\displaystyle \mbox{\sf NWD}(3,770)=1=257\cdot3-1\cdot770} , ,
- Parser nie mógł rozpoznać (błąd składni): {\displaystyle \mbox{\sf NWD}(10,231)=1=-23\cdot10+1\cdot231} , ,
- Parser nie mógł rozpoznać (błąd składni): {\displaystyle \mbox{\sf NWD}(11,210)=1=-19\cdot11+1\cdot210} , ,
- Parser nie mógł rozpoznać (błąd składni): {\displaystyle \mbox{\sf NWD}(7,330)=1=-47\cdot7+1\cdot330} , .
Pozostaje policzyć :
A więc jest najmniejszym dodatnim rozwiązaniem naszego układu równości.
Przykład
Rozważmy jeszcze jeden układ równań:
- Parser nie mógł rozpoznać (błąd składni): {\displaystyle \mbox{\sf NWD}(2,13)=\mbox{\sf NWD}(2,15)=\mbox{\sf NWD}(13,15)=1} ,
czyli możemy zaaplikować Chińskie Twierdzenie o Resztach,
- ,
- ,
- ,
- ,
- Parser nie mógł rozpoznać (błąd składni): {\displaystyle \mbox{\sf NWD}(2,195)=1=-97\cdot2+1\cdot195} , ,
- Parser nie mógł rozpoznać (błąd składni): {\displaystyle \mbox{\sf NWD}(13,30)=1=7\cdot13-3\cdot30} , ,
- Parser nie mógł rozpoznać (błąd składni): {\displaystyle \mbox{\sf NWD}(15,26)=1=7\cdot15-4\cdot26} , .
Pozostaje nam obliczenie :
Zatem jest najmniejszym dodatnim rozwiązaniem naszego układu równań.
Potęgowanie modularne
Potęgowanie modularne.
Naszym celem jest policzenie
Oczywiście, możemy założyć, że , bo inaczej najpierw można policzyć resztę z dzielenia przez , a dopiero potem Parser nie mógł rozpoznać (błąd składni): {\displaystyle (a')^b \mbox{ {\sf mod} } n } , jako że Parser nie mógł rozpoznać (błąd składni): {\displaystyle (a')^b \mbox{ {\sf mod} } n =a^b \mbox{ {\sf mod} } n } . Zauważmy, że w przeciwieństwie do zwykłego potęgowania wynik nigdy nie przekracza , czyli nie rośnie wykładniczo w stosunku do . 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óż przez siebie -krotnie, po każdym mnożeniu weź resztę modulo . Branie reszty po każdym mnożeniu, utrzymuje tymczasowy iloczyn w zbiorze . Zatem wykonywanych jest mnożeń liczb -bitowych, czyli wykonywanych jest operacji bitowych. Jest to zatem algorytm działający w czasie wykładniczym względem rozmiaru wejścia .
- Szybkie potęgowanie modulo.
Niech będzie binarnym zapisem liczby . Zauważmy, że Parser nie mógł rozpoznać (błąd składni): {\displaystyle a^b \mbox{ {\sf mod} } n =\prod_{i=0}^{k-1}a^{b_i2^i} \mbox{ {\sf mod} } n } . Policzmy zatem w następujacy sposób kolejne potęgi występujące w iloczynie:
Tym sposobem wykonanych zostanie mnożeń i dzieleń liczb -bitowych, czyli operacji bitowych. Aby otrzymać wynik musimy jeszcze wymnożyć przez siebie te potęgi, ktorym odpowiada bit w liczbie . Wykonanych zostanie więc jeszcze co najwyżej mnożeń (które przeplatamy braniem reszty modulo ) liczb -bitowych.
W sumie wykonanych zostanie operacji bitowych, a więc znacznie mniej niż sposobem naiwnym. Przedstawiony algorytm jest efektywny (wielomianowy względem długości wejścia).
Przykład
- ,
- wyznaczamy wybrane potęgi modulo :
- ,
- ,
- ,
- .
- wykonane zostały tylko mnożenia!
Przykład
- ,
- wyznaczamy wybrane potęgi modulo :
- ,
- ,
- ,
- ,
- .
- .
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 Małe Twierdzenie Fermata
Dla dowolnej liczby pierwszej i dowolnego zachodzi:
Dowód
Poznamy trzy różne dowody. Najpierw jednak zauważmy, że bez straty ogólności możemy przyjąć iż , gdyż w miejsce możemy rozważać resztę z dzielenia przez . Ponadto, zwróćmy uwagę, iż dla teza jest oczywista, natomiast dla wystarczy udowodnić, że:
Pierwszy dowód. Dla rozważmy ciąg
reszt Parser nie mógł rozpoznać (błąd składni): {\displaystyle a_k = ka \mbox{ {\sf mod} } p } liczb modulo . Pokażemy, że żadna wartość w tym ciągu się nie powtarza. Niech i, dla dowodu niewprost, niech
Wtedy . Ponieważ jest liczba pierwszą to lub . Ponieważ jednak obie liczby oraz leżą w zbiorze , żaden z tych dwu przypadków nie jest możliwy. A zatem . Oczywiście , więc iloczyny pozostałych elementów w tych dwu zbiorach muszą być równe, co daje:
lub inaczej:
Ponieważ jest liczbą pierwszą, wszystkie liczby ze zbioru są względnie pierwsze z , więc i . Można więc zastosować regułę skracania:
Drugi dowód. Dla dowodu indukcyjnego względem zauważmy najpierw, że w oczywisty sposób oraz i załóżmy, że . Aby udowodnić, że:
pokażemy znacznie mocniejszą równość
która przy i pozwoli zakończyć dowód indukcyjny.
Rozwijając dwumian mamy:
Współczynnik jest zawsze liczbą całkowitą. Ponadto, jeśli , to wszystkie czynniki obu silni mianownika są względnie pierwsze z , bo jest pierwsza, a czynniki te są mniejsze niż . Oznacza to, iż w rozkładzie na czynniki pierwsze musi znaleźć się . To zaś implikuje dla . A więc
Trzeci dowód. Niech . Rozważmy słowa długości nad alfabetem -elementowym.
Przykład
Niech , . Symbolami alfabetu niech będą A,B,C. Oto mocno skrócona lista wszystkich słów -literowych nad tym alfabetem.
{Wszystkich takich słów jest . Pokażemy, że po usunięciu słów jednoliterowych, pozostałe słów będzie można podzielić na rozłączne -elementowe grupy. To oczywiście natychmiast da , czyli pożądaną równość .
Słowo nazwiemy przesunięciem cyklicznym słowa o liter, jeśli
Przykład
Przesunięcia cykliczne słowa CBAABCB:
Drugi przykład pokazuje, że niektóre przesuniecia cyklicze sa równe. W istocie mamy:
Lemat
Niech będzie słowem, którego nie da się przedstawić jako , dla żadnego słowa i żadnej liczby . Z kolei niech , dla pewnego . Wtedy słowo ma dokładnie Parser nie mógł rozpoznać (błąd składni): {\displaystyle \left\vertv\right\vert} 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 , to te dwa przesunięcia dają to samo słowo. A zatem ma co najwyżej Parser nie mógł rozpoznać (błąd składni): {\displaystyle \left\vertv\right\vert} różnych przesunięć cyklicznych. Z drugiej strony, gdyby dwa przesunięcia cykliczne słowa były równe, to dawałyby to samo słowo. Istotnie, gdy i są literami alfabetu, to każde przesunięcie cykliczne prowadzi do jednego ze słów z listy:
Ponieważ Parser nie mógł rozpoznać (błąd składni): {\displaystyle \left\vertv\right\vert=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:
dla pewnego . Wtedy
To z kolei prowadzi do ciągu równości w poniższym diagramie:
Czyli słowo jest postaci dla i , wbrew założeniom lematu.

Wyposażeni w Lemat, możemy powrócić do trzeciego dowodu Małego Twierdzenia Fermata. Niech więc będzie słowem, w którym występują dwie różne litery alfabetu. Słowo to nie może być postaci , gdzie , gdyż inaczej Parser nie mógł rozpoznać (błąd składni): {\displaystyle \left\vertv\right\vert|p} , a skoro jest liczbą pierwszą, to Parser nie mógł rozpoznać (błąd składni): {\displaystyle \left\vertv\right\vert=1} lub Parser nie mógł rozpoznać (błąd składni): {\displaystyle \left\vertv\right\vert=p=\left\vertw\right\vert} . W pierwszym przypadku jest jednoliterowe, a w drugim i . A zatem każde z słów ma dokładnie różnych przesunięć cyklicznych. To dowodzi, iż , czyli .

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:
gdzie jest resztą z dzielenia przez .
Przykład
Policzmy Parser nie mógł rozpoznać (błąd składni): {\displaystyle 7^{126} \mbox{ {\sf mod} } 11 } .
- jest liczba pierwszą, czyli możemy skorzystać z Małego Twierdzenia Fermata,
- Parser nie mógł rozpoznać (błąd składni): {\displaystyle 126 \mbox{ {\sf mod} } 10 =6} ,
- ,
- ,
- liczymy wybrane potęgi modulo :
- ,
- .
- .
- wykonaliśmy 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ą .
Funkcja -Eulera to zdefiniowaną poprzez
Obserwacja
Dla dowolnej liczby pierwszej zachodzi:
- ,
- .
Dowód
Ponieważ jest pierwsza, liczby są z nią względnie pierwsze, co dowodzi pierwszego punktu. Dla dowodu punktu drugiego zauważmy najpierw, że jedynie wielokrotności liczby mają nietrywialny wspólny dzielnik z . Wielokrotności tych w przedziale [] jest dokładnie , stąd .

Obserwacja
Dla dowolnych takich, że zachodzi
Dowód
Z Chińskiego Twierdzenia o Resztach wiemy, iż każda liczba z przedziału jest jednoznacznie wyznaczona przez jej reszty modulo i modulo . Wiemy także, że dla dowolnego :
Parser nie mógł rozpoznać (błąd składni): {\displaystyle \mbox{\sf NWD}(a,mn)=1} wtedy i tylko wtedy, gdy Parser nie mógł rozpoznać (błąd składni): {\displaystyle \mbox{\sf NWD}(a,m)=1=\mbox{\sf NWD}(a,n)} .
To oznacza, iż liczb takich, że jest dokładnie tyle co par takich, że , oraz , .

Wniosek
Jeśli jest rozkładem na liczby pierwsze , w którym , to:
gdzie ostatnim iloczyn przebiega po wszystkich liczbach pierwszych dzielących .
Przykład
Policzmy :
- ,
- .
Oraz :
- ,
- .
Twierdzenie Euler 1736
Dla dowolnych , gdzie Parser nie mógł rozpoznać (błąd składni): {\displaystyle \mbox{\sf NWD}(a,n)=1} zachodzi:
Dowód
Zmodyfikujmy pierwszy z poznanych dowodów Małego Twierdzenia Fermata. Niech będą wszystkimi liczbami względnie pierwszymi z i niewiększymi od . Rozważmy ciąg
reszt Parser nie mógł rozpoznać (błąd składni): {\displaystyle a_i = m_i a \mbox{ {\sf mod} } n } liczb modulo . Pokażemy, że żadna wartość w tym ciągu się nie powtarza. Niech i, dla dowodu niewprost, niech
Wtedy , a ponieważ , to , co jest niemożliwe wobec .
Ponadto pokażmy, że każde jest względnie pierwsze z . Załóżmy zatem, że oraz . Ponieważ dla pewnego , to . Z drugiej strony , i , co daje i . A więc , czyli w istocie .
Wiemy więc, że liczby przyjmują wszystkie wartości i każdą tylko raz. A zatem
Ponieważ liczby są względnie pierwsze z możemy zastosować regułę skracania, by dostać

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 . 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 . Jak się przekonamy podczas poznawania algorytmu RSA, wartość jest jednak jest tak trudna do policzenia, jak rozkład na czynniki pierwsze.
Przykład
Spróbujmy policzyć Parser nie mógł rozpoznać (błąd składni): {\displaystyle 13^{101} \mbox{ {\sf mod} } 16 } .
- , czyli możemy skorzystać z Twierdzenia Eulera,
- ,
- Parser nie mógł rozpoznać (błąd składni): {\displaystyle 101 \mbox{ {\sf mod} } 8 =5} ,
- ,
- ,
- liczymy wybrane potęgi modulo :
- ,
- ,
- .
- .
Funkcja Mobiusa
Choć Wniosek Uzupelnic phi(n)| wyprowadziliśmy już bezpośrednio z Obserwacji Uzupelnic phi(p)| i Uzupelnic phi iloczynu|, 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 będzie rozkładem na liczby pierwsze , w którym . Zdefiniujmy jako zbiór wielokrotności liczby w . Wtedy Parser nie mógł rozpoznać (błąd składni): {\displaystyle \varphi(n)=n-\left\vertA_1\cup\ldots\cup A_k\right\vert} . Korzystając z Zasady Włączania i Wyłączania otrzymujemy
gdzie Parser nie mógł rozpoznać (błąd składni): {\displaystyle \alpha_i=\sum_{1\leq j_1<\ldots<j_i\leq k}\left\vertA_{j_1}\cap\ldots\cap A_{j_i}\right\vert} . Zauważmy, że zbiór składa się z wielokrotności liczby , czyli liczb . Zatem Parser nie mógł rozpoznać (błąd składni): {\displaystyle \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}}} , skąd
Teraz łatwo już policzyć

Przyjrzyjmy się temu dowodowi trochę dokładniej. Analizując ostatnią sumę dla mamy
Po prawej stronie mamy naprzemienną sumę składników , gdzie przebiega kolejne dzielniki liczby , będące iloczynem różnych liczb pierwszych. Czynnik jest dodawany, jeśli jest iloczynem parzystej liczby liczb pierwszych i odejmowany, jeśli jest iloczynem nieparzystej liczby liczb pierwszych. Zależność tę możemy ogólniej zapisać w postaci
gdzie zadana jest przez:
Funkcja 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
Dla dowolnego mamy
Dowód
Niech . Wtedy każdy dzielnik liczby ma rozkład , gdzie . Jeśli choć jedno , to . Rozważmy więc tylko te dzielniki dla których . Każdy taki dzielnik wyznacza jednoznacznie pewien podzbiór zbioru , przy czym wartościom , dla których odpowiadają podzbiory o parzystej liczbie elementów, a wartościom , dla których odpowiadają podzbiory o nieparzystej liczbie elementów. A zatem:

Obserwacja wzór inwersyjny Mobiusa
Dla dowolnych funkcji , jeśli , to .
Dowód
Ponieważ
to
Zauważmy, iż . Zatem
Z Obserwacji Uzupelnic obserwacja - suma naprzemienna mu| wiemy, że wewnętrze sumy zerują się dla wszystkich . Zatem jedyny interesujący składnik zewnętrznej sumy dostajemy przy :

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