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.
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 .
( 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
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]
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] .
Talteoretiske algoritmer | |
---|---|
Enkelthedstest | |
At finde primtal | |
Faktorisering |
|
Diskret logaritme | |
Finder GCD | |
Modulo aritmetik | |
Multiplikation og division af tal | |
Beregning af kvadratroden |