Adlemann-Pomeranz-Rumeli-testet (eller Adleman-Pomeranz-Rumeli-testet, APR-testet ) är det mest [1] effektiva, deterministiska och ovillkorliga primalitetstestet hittills , utvecklat 1983. Uppkallad för att hedra sina forskare - Leonard Adleman , Karl Pomerans och Robert Roumeli . Algoritmen innehåller aritmetik i cyklomatiska fält .
Därefter förbättrades algoritmen av Henry Cohen och Hendrik Lenstra till APR-CL , vars körtid för vilket tal som helst kan beräknas som , där är någon beräknad konstant.
Fram till 1980 var tidskomplexiteten för algoritmen exponentiell för alla kända primalitetstestningsalgoritmer, förutom probabilistiska och oprövade . Men 1983 utvecklades en algoritm som ligger nära P -klassen . Strängt taget tillhör algoritmen inte denna klass, men långsamt ökande komplexitet tillåter praktisk användning av algoritmen.
Till exempel, för ett nummer - googolplex ,
Det gamla skämtet lyder:
"Visade sig gå till oändligheten, men ingen har någonsin sett honom göra det."Ian Stewart
Låt det finnas någon ändlig uppsättning primtal . Om följande villkor är uppfyllda för något primtal :
kallas då ett euklidiskt primtal med avseende på mängden .
För ett givet tal konstruerar vi en mängd så att produkten av alla euklidiska primtal med avseende på denna mängd kommer att vara större än . Låt oss välja den minsta möjliga .
Elementen i denna uppsättning kommer att kallas uppsättningen av "initial" primtal.
Låt oss presentera några nummer . Låt vara dess primitiva rot . Då måste följande villkor vara uppfyllt:
,
var .
Notera : Eftersomvi väljer det minsta icke-negativa talet.
En Jacobis summa är en summa av följande form:
,
där summeringen är över alla uppsättningar av coset för i , förutom de som är lika med .
De viktigaste lemman [2] som används för att bevisa algoritmens riktighet:
De främsta idealen för , som ligger över huvudidealet , är:
för alla
Låt och ha ordning och reda i gruppen . Låt oss ta . Också var är ett polynom i för varje . Vi antar att idealen If är en primtalare , då i :
och var och en delbar med något främsta ideal av lögner över
Låt oss också ta element i samordning med och med respekt för varandra.
är Hilbert-symbolen .
Vi väljer så att . För anta: det är eller .
Sedan
För alla
Om , så finns det sådana att och
var är det omvända elementet till
Låt vara ideal i sådant och låt vara konjugera prime ideal dividera respektive. Låt sådant existera . Då är det sant för alla:
och därför
Om är ett sammansatt tal, så har det någon divisor . För att kontrollera enkelheten letar vi efter denna .
Om vi känner till värdena för varje par , så kan vi hitta den kinesiska restsatsen . Varje par väljs enligt följande: , och är ett euklidiskt primtal relativt sådant att
Algoritmen räknar upp alla möjliga värden för alla , baserat på det faktum att endast ett är känt
1. Beräkna det minsta positiva kvadratfria talet , så att: .
Låt oss definiera en uppsättning "initial" primtal som är delare av . Vi kallar det ett euklidiskt primtal om primtal och
2. Låt oss kontrollera om det är delbart med något "initial" eller euklidiskt primtal. Om det finns en divisor och inte lika med , deklarerar vi sammansatt och avbryter algoritmen. Annars beräknar vi den minsta positiva primitiva roten för varje euklidiskt primtal .
3. För varje "initial" primtal hittar vi tal som:
,
,
För att acceptera .
4. För varje "initial" och euklidiskt primtal så att vi fixar ett primideal :
,
där tillhör och är roten till enheten .
Beräkna Jacobis summa
om ,
om
B. Beräkningssteg1. För varje "initial" primtal, hitta gcd i för och för mängden , där den löper över alla värden av euklidiska primtal, och , och kör över alla värden från Gal . Sedan fattar vi antingen ett beslut om vad som är sammansatt, eller så bygger vi det rätta idealet i ringen , och hittar även siffror och , så att:
,
eller någonstans
2. För varje "initial" primtal gör vi följande: om för några , ta sedan . I den här nyckeln konstruerar vi tal för alla och sådana att:
Om för alla så accepterar vi .
C. KonsolideringsstegLåt oss göra steg 1-4 för alla naturliga
1. För varje vi beräknar enligt den kinesiska restsatsen beräknar vi talen :
för alla möjliga saker . Låt oss också anta det
2. För varje , beräknar vi det minsta heltal, ett positivt tal
3. Använd den kinesiska restsatsen och beräkna det minsta positiva talet så att för varje
4. Om , deklarerar vi sammansatt. Annars går vi vidare till nästa
5. Vi förklarar enkel.
Uppskattningen av exekveringstiden för algoritmen följer av följande satser [2] :
Sats 1.För värden bestämmer ovanstående algoritm korrekt om det är prime eller sammansatt i tid . Och följande uppskattningar är giltiga: för enkelt
för alla värden Där finns en positiv, beräknad konstant. Sats 2.Det finns positiva, beräkningsbara konstanter som för alla