En rationell sikt är en allmän algoritm för att faktorisera heltal till primtalsfaktorer . Algoritmen är ett specialfall av den allmänna talfältssiktmetoden . Även om den är mindre effektiv än den allmänna algoritmen, är den konceptuellt enklare. Algoritmen kan hjälpa till att förstå hur den allmänna talfältssiktmetoden fungerar.
Antag att vi försöker faktorisera ett sammansatt tal n . Vi definierar gränsen för B och basen av faktorer (som vi kommer att beteckna med P ), mängden av alla primtal mindre än eller lika med B . Vi letar sedan efter ett positivt heltal z så att både z och z+n är B -släta , det vill säga alla deras primtalsdelare finns i P . Vi kan därför skriva för lämpliga krafter
,
och även för lämpliga vi har
.
Men och är modulo-jämförbara , så varje sådant heltal z som vi hittar ger en modulo multiplikationslänk (mod n ) bland alla element i P , dvs.
(där a i och b i är icke-negativa heltal.)
När vi har genererat tillräckligt många av dessa förhållanden (vanligtvis tillräckligt för att antalet sådana förhållanden är något större än storleken på P ), kan vi använda linjära algebrametoder för att multiplicera dessa olika förhållanden på ett sådant sätt att potenserna för alla primfaktorer vänder ut att vara jämn. Detta ger oss en jämförbarhet av kvadrater modulo av formen a 2 ≡ b 2 (mod n ), som kan omvandlas till en faktorisering av talet n , n = gcd ( a - b , n ) × gcd ( a + b , n ). En sådan nedbrytning kan vara trivial (det vill säga n = n × 1), i vilket fall man bör försöka igen med en annan kombination av förhållanden. Om vi har tur får vi ett icke-trivialt par av divisorer av n och algoritmen kommer att avslutas.
Låt oss faktorisera talet n = 187 med hjälp av en rationell sikt. Låt oss prova talet B =7, för vilket mängden P = {2,3,5,7} fungerar som bas för faktorer. Det första steget är att kontrollera om talet n är delbart med tal från mängden P . Det är tydligt att i fallet när n är delbart med ett av dessa primtal har vi hittat en lösning. 187 är dock inte delbart med 2, 3, 5 eller 7. I nästa steg letar vi efter lämpliga z- värden , 2, 5, 9 och 56 är lämpliga tal. De fyra z- värdena ger kvoterna modulo 187:
Nu kombinerar vi dessa förhållanden på olika sätt och slutar med jämna styrkor. Till exempel,
Alternativt har ekvation (3) redan den önskade formen:
En rationell såll, som en allmän såll av ett talfält, kan inte erhålla en nedbrytning av tal av formen p m , där p är ett primtal och m är ett heltal. Problemet är inte för stort - statistiskt sett är sådana siffror sällsynta och dessutom finns det en enkel och snabb process för att kontrollera att ett givet tal har en sådan form. Tydligen är den mest eleganta metoden att kontrollera om för 1 < b < log(n), med hjälp av heltalsversionen av Newtons rotmetod [2]
Det största problemet är att hitta siffror z så att både z och z + n är B -släta . För varje givet B, minskar andelen B -jämna tal snabbt med nummerstorleken. Så om n är stort (säg hundra siffror) kommer det att vara svårt eller nästan omöjligt att hitta tillräckligt med z för att få algoritmen att fungera. Fördelen med den allmänna talfältssiktalgoritmen är att man måste hitta jämna tal av ordning n 1/ d för något positivt heltal d (vanligtvis 3 eller 5), istället för ordning n som krävs av denna algoritm.
Talteoretiska algoritmer | |
---|---|
Enkelhetstest | |
Hitta primtal | |
Faktorisering | |
Diskret logaritm | |
Hitta GCD | |
Modulo aritmetik | |
Multiplikation och division av tal | |
Beräkna kvadratroten |