AKS steht f�r Agrawal,Kayal und Saxena. Auf der Arbeit dieser drei Inder beruht der AKS-Test. Er ist vor allem in der Komplexit�tstheorie von Interesse.
Der Test zeigt, dass PRIM in der Komplexit�tsklasse P liegt.
PRIM bezeichnet dabei, die Fragestellung, ob eine vorgegebene Zahl eine Primzahl ist, P fasst alle Entscheidungsprobleme, die mit einem
deterministischen Algorithmus in polynomieller Zeit l�sbar sind in einer Klasse zusammen.
Der Algorithmus
Die Hauptidee
Der Algorithmus beruht auf einem Vergleich von Polynomen in dem Restklassenring R=((Z/Zn)[X])/(Xr-1).
Die Binomische Formel f�r endliche Ringe der Charakteristk p besagt:
Satz: Sei p eine Primzahl und R ein kommutativer Ring der Charakteristik p.
Dann gilt: (c+d)pk = cpk + d pk f�r alle c,d ∈ R und alle k ∈ Ν.
In R gilt also mit k=1 und einer beliebigen Primzahl p: ([X]+[b])p = [X]p + [b]p.
Und in (Z/Zn)[X] gilt: (X+b)p ≡ (Xp + bp) mod (Xr-1).
Sei nun b invertierbar in (Z/Zn)[X], also b∈ (Z/Zn)*,
dann folgt zusammen mit dem Satz vom Fermat: (X+b)p ≡ (Xp + b) mod (Xr-1).
Ist jetzt a∈Z ein Repr�sentant der Restklasse [b], also ggT(a,p)=1,
dann gilt in R: [X+a]p = [Xp + a mod (Xr-1,n)].
F�r alle Primzahlen muss diese Bedingung also gelten. Um daraus einen Primzahltest zu machen interessiert aber die Umkehrung dieses Satzes.
Man kann nun zeigen : W�hlt man nun r so, dass es bestimmte Eigenschaften hat und ist f�r dieses eine r die Polynomkongruenz f�r gen�gend
viele bs erf�llt, dann ist p eine Primzahlpotenz. Also p=qk f�r eine Primzahl q. Mit effizienten Algorithmen kann man k≥2 ausschlie�en,
sodass k=1 und p=q sein muss. Dieses gew�hlte r wird ein AKS Zeuge genannt.
Die Formulierung
Sei n ∈Ν eine Zahl mit n > 1.
1.Schritt: If n = ab mit a, b ∈ Ν und b>1, n zusammengesetz |
2.Schritt: Suche das kleinste r ∈Ν f�r das nk≠1 mod r f�r alle k ≤ 4log2(n). |
3.Schritt: If 1<ggT(i,n)<n f�r ein i≤r, dann ist n zusammengesetzt. |
4.Schritt: If n≤r, dann ist n eine Primzahl. |
5.Schritt: F�r alle b=1 bis ⌊2φ0.5log(n)⌋do: if (X+b)n≠xn+b (modXr-1, n) , dann ist n zusammengesetzt |
6.Schritt: n ist Primzahl. |
Applet AKS Test
Quellcode:
AKSTest.java
UserInterface.java
2.4.1 Rho-Faktorisierung |