Eulersche Funktion

Die Anzahl an aa zwischen 00 und nn, für die gilt, dass der ggT mit nn gleich 11 ist.

φ(n)=#{a:0an1,ggT(a,n)=1}=#(Z/nZ)\varphi(n)=\#\{a: 0 \leq a \leq n-1, \operatorname{ggT}(a, n)=1\}=\#(\mathbb{Z} / n \mathbb{Z})^*

Einfache Implementierung in Python:

def euler(n):
    c = 0
    for a in range(n):
        ggt, _ = ggT(a, n)
        if ggt == 1:
            c += 1
    return c

Dieser Algorithmus ist sehr langsam für großes nn. Mit dem naiven Faktorisierungsverfahren lässt sich die eulersche Funktion auch wie folgt bestimmen:

φ(n)=ipiei1(pi1)=n(11p1)(11pr)=npn(11p)\varphi(n)=\prod_i p_i^{e_i-1}\left(p_i-1\right)=n\left(1-\frac{1}{p_1}\right) \ldots\left(1-\frac{1}{p_r}\right)=n \prod_{p \mid n}\left(1-\frac{1}{p}\right)

Kann auch verwendet werden um zu testen ob eine Zahl nn eine Primzahl ist. Man testet:

φ(n)=n1.\varphi(n)=n-1.

Also in Python:

def is_prime(n):
	return euler(n) == n-1

Für nn gelten die folgenden Äquivalenzen:

n ist Primzahl φ(n)=n1Z/nZ ist Ko¨rper. n \text { ist Primzahl } \Longleftrightarrow \varphi(n)=n-1 \quad \Longleftrightarrow \mathbb{Z} / n \mathbb{Z} \text { ist Körper. }

Körper

Wenn nn keine Primzahl ist, dann haben wir

n=ab.n=ab.

Damit gilt also in

Z/nZ\mathbb{Z}/n \mathbb{Z}

, dass ab=0ab=0 wobei a0a\neq 0 und b0b\neq 0. Es ist also kein Integritätsring