Cipolla algoritme

Cipollas algoritme er en teknik til at løse en kongruent ligning af formen

hvor , så n vil være kvadratet af x , og hvor er et ulige primtal . Her betegner et sidste felt med elementer . Algoritmen er opkaldt efter den italienske matematiker Michele Cipolla , som opdagede metoden i 1907.

Algoritme

Indgang:

Afslut:

Trin 1. Find et tal , så det ikke er et kvadrat. En algoritme til at finde sådanne tal er ikke kendt, undtagen ved forsøg og fejl . Vi vælger bare et tal og beregner Legendre-symbolet for at sikre, at det opfylder betingelsen. Chancen for at et tilfældigt tal matcher er . Hvis den er stor nok, er denne værdi omtrent lig med [1] . Det forventede antal forsøg på at få et passende a er således 2.

Trin 2. Få x ved at beregne i feltet . Dette tal x vil være en af ​​rødderne til ligningen

Hvis , så holder også. Da p er ulige, så for den fundne løsning x er der altid en anden løsning lig -x .

Eksempel

( Bemærk : Alle elementer op til andet trin hører til feltet , og alle elementer i andet trin hører til feltet ). Vi leder efter et nummer x sådan

Før du anvender algoritmen, skal du kontrollere, at tallet faktisk er en firkant i feltet , hvilket betyder, at Legendre-symbolet skal være lig med 1. Du kan kontrollere dette ved hjælp af Euler-kriteriet : . Dette bekræfter, at 10 er et kvadrat, og algoritmen kan anvendes på det.

Således er en løsning, ligesom Indeed og

Bevis

I den første del af beviset bekræfter vi, at det faktisk er et felt. For at lette beregningerne introducerer vi et tal lig med . Selvfølgelig er det ikke en kvadratisk rest, så kvadratroden findes ikke i . Dette kan groft sagt betragtes som en analog til det komplekse tal i . Feltets aritmetik er ret indlysende. Tillæg defineres som

.

Multiplikation er også defineret på sædvanlig måde. Hvis vi husker det , får vi det

.

Nu skal vi tjekke feltets egenskaber. Lukning under operationerne addition og multiplikation, associativitet , kommutativitet og distributivitet er let at verificere, da feltet ligner feltet for komplekse tal (hvor det tjener som en analog til i ). Det neutrale element ved tilføjelse er eller, mere formelt, hvis , så

.

Det neutrale element ved multiplikation er mere præcist :

.

Det er kun tilbage at kontrollere, at der er inverse elementer under addition og multiplikation. Det er let at se, at det omvendte af tilføjelsen af ​​et tal er det tal , som også er indeholdt i feltet , fordi . For at vise, at ethvert ikke-nul-element har et element inverst i multiplikation, skriver vi repræsentationerne og . Med andre ord,

.

Vi får to ligninger, og . Vi løser dette system med hensyn til og , vi får

, .

De omvendte elementer i udtrykkene for og eksisterer, fordi de er elementer i feltet . Dette fuldender den første del af beviset.

I anden del af beviset vil vi vise det for ethvert element . Per definition er ikke et kvadrat i . Så giver Euler-kriteriet

.

Således ,. Dette sammen med Fermats lille sætning (som angiver, at for alle ) og viden om, at i felter med karakteristiske , viser det ønskede resultat

.

Den tredje og sidste del af beviset viser, at der i sagen . Beregn

.

Bemærk at disse beregninger finder sted i , så . Lagranges sætning siger, at et polynomium , der ikke er nul , af grad n har højst n rødder over et felt K. Givet at polynomiet har 2 rødder i , kan der ikke være andre rødder . Det har vist sig, at og er rødder til polynomiet i , Så . [2]

Hastighed

Efter at have fundet et passende a , er antallet af operationer, som algoritmen kræver, multiplikationer og additioner, hvor m er antallet af cifre i den binære repræsentation af tallet p , og k er antallet af ener i denne repræsentation. For at finde en ved forsøg og fejl er det forventede antal beregninger af Legendre-symbolet 2. Du kan dog være heldig første gang, men det kan tage mere end 2 forsøg. Følgende to ligheder holder i feltet

hvor er kendt på forhånd. Denne beregning kræver 4 multiplikationer og 4 additioner.

hvor og . Denne operation kræver 6 multiplikationer og 4 additioner.

Hvis vi antager, at (i tilfælde af , er direkte beregning meget hurtigere) har det binære udtryk fortegn, hvoraf k er lig med et. For at beregne den th potens af et tal skal den første formel anvendes én gang og den anden én gang.

Cipolla-algoritmen er bedre end Tonelli-Shanks-algoritmen , hvis og kun hvis , hvor er den maksimale effekt på 2, der er delelig med [3] .

Noter

  1. Crandall, Pomerance, 2001 , s. 157.
  2. M. Baker Cipollas algoritme til at finde kvadratrødder mod p . Hentet 29. juni 2017. Arkiveret fra originalen 25. marts 2017.
  3. Gonzalo Tornaria Firkantrødder modulo p  (utilgængeligt link)

Litteratur

Links