# Modulární počítání ## Eukleidův algoritmus Algoritmus pro nalezení největšího společného dělitele čísel $a$ a $b$. Největšího společného dělitele označíme jako $\gcd(a, b)$. Mějme $a = 57, b = 27$. Platí, že $c = \gcd(a, b)$ dělí $a$ a rovněž $b$, dělí tedy i rozdíl $a-b = 30$. Pokud nyní najdeme $\gcd(30, 27)$, získáme i $\gcd(57, 27)$. Aplikacím tohoto postupu dostaneme postupně $\gcd(30, 27) = \gcd(3, 27) = 3$, tedy i $\gcd(57, 27) = 3$. ## Modulární aritmetika Ekvivalence $\sim$ na množině $X$ je relace na $X$, která je reflexivní, symetrická a tranzitivní. Ekvivalence, která zachovává operace definované na množině, se nazývá **kongruence**. Jedna z takových kongruencí je například kongruence modulo $p$. Pro $a \in \mathbb{Z}_{n}$ rozumíme opačným prvkem prvek $x \in \mathbb{Z}_{n}$ takový, že řeší rovnici $a \cdot x \equiv 1 \quad (\text{mod } n)$. Značíme jej $-a$. ## Kongruence modulo $p$ Motivace: při počítání hodin je pro nás obvykle 13 hodin to stejné, jako 1 hodina. **Definice**: Mějme $p \geq 1$ a celá čísla $a, b \in \mathbb{Z}$. Relaci $\equiv (\text{mod }p)$ na množině $\mathbb{Z}$ nazveme **kongruencí modulo** $p$, kterou značíme $a \equiv b \space (\text{mod }5)$, jestliže $n$ dělí $b - a$. - předpis: $a \equiv b \space (\text{mod }p) \iff (b - a) \text{ je dělitelné } p$ **Příklad**: Z hodin víme, že $21 \equiv 9 \space (\text{mod }12)$. Zkouška podle definice: $9−21 = −12$, což je dělitelné dvanácti. Jiný příklad: $(-2) \equiv 13 \space (\text{mod }5)$, protože $13 - (-2) = 15$, což je dělitelné pěti. ### Zbytkové třídy Kongruence modulo $p$ je ekvivalence, její třídy ekvivalence nazýváme **zbytkové třídy** a označujeme $\mathbb{Z}_{p}(i), i = 0, \dots, p-1$. Každá z $p$ tříd této ekvivalence je **tvořena všemi čísly**, která **při dělení číslem** $p$ dávají **tentýž zbytek**. **Operace**: Na množině $\mathbb{Z}_{p}$ definujeme operace $\oplus$ a $\otimes$ předpisem: - $\mathbb{Z}_{p}(i) \oplus \mathbb{Z}_{p}(j) = \mathbb{Z}_{p}(i+j)$ - $\mathbb{Z}_{p}(i) \otimes \mathbb{Z}_{p}(j) = \mathbb{Z}_{p}(ij)$ Nechť $p \geq 1$ je přirozené číslo. Potom pro každé prvky $a, b, c \in \mathbb{Z}_{p}$ platí: 1) komutativita: $\quad a \oplus b = b \oplus a, \quad a \otimes b = b \otimes a$, 2) asociativita: $\quad (a \oplus b) \oplus c = a \oplus (b \oplus c), \quad (a \otimes b) \otimes c = a \otimes (b \otimes c)$, 3) neutrální prvek: $\quad a \oplus 0 = a, \quad a \otimes 1 = a$, 4) opační prvek: $\quad \exists \, (-a) \in \mathbb{Z}_{p}, \quad a \oplus (-a) = 0$, 5) distributivita: $\quad a \otimes (b \oplus c) = (a \otimes b) \oplus (a \otimes c)$, kde $0 = \mathbb{Z}_{p}(0)$ a $1 = \mathbb{Z}_{p}(1)$. ## Aritmetika modulo $p$ **Definice** - Nechť $p \geq 1$ je přirozené číslo. Pro každou zbytkovou třídu $\mathbb{Z}_{p}$ vybereme jednoho **reprezentanta**, tedy prvek v intervalu $\langle 0, p-1 \rangle$. - Množinu všech takových reprezentantů nazveme **úplnou soustavou zbytků modulo** $p$. - Operace $\oplus$ a $\otimes$ použité na úplné soustavě zbytků modulo $p$ nazveme **aritmetikou modulo** $p$.