\chapter{Modulare Arithmetik}
    \section{Exkurs: Division mit Rest}
        Für $a,b\in \mathbb{Z},b\ne 0$ gibt es eindeutig bestimmte Element $q,r\in\mathbb{Z},0\le r<|b|$:
        $$\begin{aligned}
            a =b\cdot q+r\\
            a /_\mathbb{Z} b :&= q \\
            a\mod b :&= r \\
        \end{aligned}$$

    \section{Der Ring $\mathbb{Z}_n$}\label{Der Ring Z}
        Ein Ring $\mathbb{Z}_n$ ist definiert durch: $$\mathbb{Z}_n := {0,1,...,n-1}$$

        \subsection{Addition und Multiplikation}\label{modulare_addition}
            \begin{equation}
                \begin{aligned}
                    a +_{\mathbb{Z}_n} b :&= (a+b) \mod n\\
                    a \cdot_{\mathbb{Z}_n} b :&= (a\cdot b) \mod n\\
                \end{aligned}
            \end{equation}

            \subsubsection{Inverse bezüglich der Addition}
                jedes $a\in \mathbb{Z}$ hat ein Inverses:
                $$ -a := 
                \begin{cases}
                    0   &\text{für }a=0 \\
                    n-a &\text{sonst}
                \end{cases}$$

            \subsubsection{Inverse bezüglich der Multiplikation}
                ein Element $a\in \mathbb{Z}_n$ ist \textit{(multiplikativ) invertierbar}, falls es ein Element $b\in \mathbb{Z}_n$ gibt, für das gilt:
                $$a\cdot b = 1$$
                man schreibt auch:
                $$a^{-1}:=b$$

                Die Menge der invertierbaren Elemente in $\mathbb{Z}_n$ wird als $\mathbb{Z}_n^*$ bezeichnet:
                $$\mathbb{Z}_n^* = \{a\in\mathbb{Z}_n\mid a\cdot b=1 \text{ für ein }b\in\mathbb{Z}n\}$$
                Zudem gilt, dass ein Element nur dann invertierbar ist, falls $ggT(a,n)=1$:
                $$\mathbb{Z}_n^* = \{a\in\mathbb{Z}_n\mid ggT(a,n)=1\}$$
        
        \subsection{Subtraktion}    
            Eine Subtraktion entspricht einer Addition mit der Inverse:
            $$a-_{\mathbb{Z}_n}b := a+_{\mathbb{Z}_n}(-b) \mod n$$
        
        \subsection{Teiler, Vielfache}
            $b\in \mathbb{Z}$ teilt $a\in \mathbb{Z}$ falls ein $q\in \mathbb{Z}$ existiert mit:
            $$ a = b\cdot q$$
            man schreibt auch $b|a$

            \subsubsection{Teilerregeln}
                \begin{enumerate}
                    \item $a|0$ $\forall a\in \mathbb{Z}$
                    \item $a|b \Leftrightarrow a|(-b)$
                    \item $a|b \text{ und } a|c \Rightarrow a|(b+c)$
                \end{enumerate}
        
        \subsection{Kongruenz}
            $a,b\in \mathbb{Z}$ sind \textit{kongruent modulo n}, falls $n\in \mathbb{N}|(a-b)$.
            Man schreibt auch $a\equiv b$
        
        \subsection{Matrizen}
            \subsubsection{Determinantenberechnung}
                Die Determinante $\det(A)$ der ($N,N$)-Matrix $A=(a_{ij})_{1\le i,j \le N}$ (mit ganzzahligen Einträgen) über $\mathbb{Z}_n$ wird definiert durch:
                $$\det(A) \mod n = det((a_{i,j} \mod n)_{1\le i,j\le N})$$
                Zudem gilt für die Matrizen $A=(a_{ij})_{1\le i,j \le N}$ und $B=(b_{ij})_{1\le i,j \le N}$ (mit ganzzahligen Einträgen):
                $$\begin{aligned}
                   \det(A\cdot B) \mod n &= (det(A)\cdot \det(B)) \mod n \\
                   &= ((\det(A) \mod n)\cdot(\det(B) \mod n)) \mod n\\
                   &= (\det(A) \mod n)\cdot_{\mathbb{Z}_n}(\det(B) \mod n) 
                \end{aligned}$$
            
            \subsubsection{Inverse Matrix}
                Die Inverse einer quadratischen Matrix $A$ über $\mathbb{Z}_n$ lässt sich mithilfe der Adjunkten berechnen:
                $$A^{-1} = (\det(A))^{-1} \cdot adj(A)$$
                Die Adjunkte lässt sich über $\mathbb{Z}_n$ berechnen, da lediglich Summen und Differenzen von Produkten berechnet werden müssen.

        \subsection{Kartesisches Produkt von Ringen}
            Sind $R_1,R_2,...,R_r$ Ringe, so bildet das kartesische Produkt ($R_1\times R_2\times\cdots\times R_r$)ebenfalls einen Ring mit den folgenden Verknüpfungen:
            $$\begin{aligned}
                (a_1,...,a_r)+(b_1,...,b_r)&=(a_1+b_1,...,a_r+b_r)\\
                (a_1,...,a_r)\cdot(b_1,...,b_r)&=(a_1\cdot b_1,...,a_r\cdot b_r)\\
            \end{aligned}$$
            Auch das kartesische Produkt der Einheitengruppen bildet einen Ring:
            $$R^*=R_1^*\times\cdots\times R_r^*$$

        \subsection{Isomorphie von Ringen}\label{Isomorphie}
            Eine bijektive Abbildung $f:R_1\rightarrow R_2$ wird Isomorphismus genannt, falls für alle $a,b\in R_1$ gilt:
            $$\begin{aligned}
                f(a+b)&=f(a)+f(b)\\
                f(a\cdot b)&=f(a)\cdot f(b)\\
            \end{aligned}$$
            Zwei isomorphe Ringe werden als $R_1\cong R_2$ geschrieben.
    
    \section{Der erweiterte Euklid'sche Algorithmus}
        Der Euklid'sche Algorithmus ist ein sehr effizienter Weg den ggT zweier Zahlen zu ermitteln.
        Der Euklid'sche Algorithmus lässt sich auch über $\mathbb{Z}_n$ verwenden.
        Man spricht dann von dem erweiterten Euklid'schen Algorithmus.

        \subsection{Euklid'scher Algorithmus}\label{euklid}
            gegeben: $a_0,b_0\in\mathbb{Z}$
            \begin{enumerate}
                \item $a:=a_0$ und $b:=b_0$
                \item falls $b=0$ gebe $|a|$ aus und beende
                \item $r:=a \mod b$
                \item $a:=b$
                \item $b:=r$
                \item goto 2.
            \end{enumerate}
        
        \subsection{erweiterter Euklid'scher Algorithmus}\label{erweiterter Euklid}
            gegeben: $a_0,b_0\in\mathbb{N}_0$\\
            gesucht: $\alpha\cdot a_0+\beta \cdot b_0 = g = ggT(a_0,b_0)$
            \begin{enumerate}
                \item $a:=a_0$, $\alpha_a=1$, $\beta_b=0$, $b := b_0$, $\alpha_b := 0$, $\beta_b:=1$
                \item falls $b=0$ gebe $g:=a$, $\alpha:=\alpha_a$ und $\beta:=\beta_a$ aus
                \item $q:=a/_\mathbb{Z} b$
                \item $r:=a-q\cdot b$,$\alpha_r := \alpha_a-q\cdot \alpha_b$, $\beta_r := \beta_a-q\cdot \beta_b$
                \item $a:=b$, $\alpha_a:=\alpha_b$, $\beta_a := \beta_b$
                \item $b:=r$, $\alpha_b :=\alpha_r$ $\beta_b :=  \beta_r$
                \item goto 2.
            \end{enumerate}

            \subsubsection{Beispiel}
                Eingabe: $$a_0 = 1224\text{ und } b_0 = 156 $$

                Berechnung:\\
                \begin{center}
                \begin{tabular}{c|c|c|c}
                   1224 & 156 & a,b & q\\
                   \hline
                   1 & 0 & 1224 \\
                   0 & 1 & 156 & 7\\
                   1 & -7 & 132 & 1\\
                   -1 & 8 & 24 & 5\\
                   6 & -47 & 12 & 2 \\
                    & & 0\\ 
                \end{tabular}\\
                \end{center}

                Ergebnis: $$6\cdot 1224 + (-47)\cdot 156 = 12$$
    
    \section{Euler'sche $\varphi$-Funktion}
        Die Euler'sche $\varphi$-Funktion bezeichnet die Anzahl invertierbarer Elemente in $\mathbb{Z}_n$
        $$\varphi(n):=\begin{cases}
            |\mathbb{Z}_n^*|    &\text{für } n\in\mathbb{N},n\ge 2\\
            1   &\text{für } n = 1
        \end{cases}$$

        Für $a,b\in\mathbb{N}$ mit $ggT(a,b)=1$ gilt:
        $$\varphi(a\cdot b) = \varphi(a) \cdot \varphi(b)$$

        Zudem gilt für ein $n\in\mathbb{N}$ dessen Primzahlzerlegung $n = p_1^{e_1} \cdots p_r^{e_r}$:
        $$\varphi(n) = n\cdot \prod_{i=1}^r \big( 1-\frac{a}{p_i} \big)$$

        \subsection{$\varphi$-Funktion und Primzahlen}
            für eine Primzahl $p$ gilt:
            $$\varphi(p)=p-1$$
            Für Primzahlpotenzen gilt zudem:
            $$\varphi(p^e)=p^{e-1}(p-1)$$
