Eulersche Funktion

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

φ(n)=#{a:0≤a≤n−1,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)=∏ipiei−1(pi−1)=n(1−1p1)…(1−1pr)=n∏p∣n(1−1p)\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)=n−1.\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)=n−1⟺Z/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 a≠0a\neq 0 und b≠0b\neq 0. Es ist also kein Integritätsring