Adleman-Pomerans-Rumeli test

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 20 februari 2020; kontroller kräver 3 redigeringar .

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.

Historik

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

Nyckelbegrepp

Euklidisk prime

Låt det finnas någon ändlig uppsättning primtal . Om följande villkor är uppfyllda för något primtal :

  1.  är ett kvadratfritt tal
  2. alla primtalare hör till mängden

kallas då ett euklidiskt primtal med avseende på mängden .

En uppsättning "initial" primtal

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.

Indq ( x)

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.

Jacobi summa

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 .

Nyckellemman

De viktigaste lemman [2] som används för att bevisa algoritmens riktighet:


Lemma 1.

De främsta idealen för , som ligger över huvudidealet , är:

för alla


Lemma 2.

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


Lemma 3.

Låt oss också ta element i samordning med och med respekt för varandra.

 är Hilbert-symbolen .


Lemma 4. Om , då


Lemma 5.

Vi väljer så att . För anta: det är eller .

Sedan


Lemma 6. [3] .

För alla


Lemma 7.

Om , så finns det sådana att och

var  är det omvända elementet till


Lemma (Utdrag).

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

Idén med algoritmen

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

Algoritm

Inmatning: heltal n > 1. A. Förberedelsesteg

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äkningssteg

1. 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. Konsolideringssteg

Lå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.

Svårighetsgrad

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

Programvaruimplementering

Anteckningar

  1. Stewart, 2015 .
  2. 1 2 Adleman, Pomerance, Rumely, 1983 .
  3. K. Iwasawa. En anteckning om jacobi sum  //  Symposia Math. - 1975. - S. 447-459 .

Referenser

  • Ian Stewart. De största matematiska problemen. — M. : Alpina facklitteratur, 2015. — 460 sid. - ISBN 978-5-91671-318-3 .
  • Leonard M. Adleman, Carl Pomerance och Robert S. Rumely. [1]  (engelska)  = Om att skilja primtal från sammansatta tal. - 1983. - S. 7-25 .