Rationaalinen seula

Rationaalinen seula on yleinen algoritmi kokonaislukujen laskemiseksi alkutekijöiksi . Algoritmi on yleislukukenttäseulamenetelmän erikoistapaus . Vaikka se on vähemmän tehokas kuin yleinen algoritmi, se on käsitteellisesti yksinkertaisempi. Algoritmi voi auttaa ymmärtämään, kuinka yleinen lukukenttäseulamenetelmä toimii.

Menetelmä

Oletetaan, että yritämme kertoa yhdistelmäluvun n . Määrittelemme B : n rajan ja tekijöiden kannan (jotka merkitsemme P ), kaikkien alkulukujen joukon, jotka ovat pienempiä tai yhtä suuria kuin B . Etsimme sitten positiivista kokonaislukua z siten, että sekä z että z+n ovat B -sileät , eli kaikki niiden alkujakajat sisältyvät P :hen . Voimme siksi kirjoittaa sopivilla tehoilla

,

ja myös sopiva meillä on

.

Mutta ja ovat modulovertailukelpoisia , joten mikä tahansa sellainen kokonaisluku z , jonka löydämme, antaa modulo-kertolinkin (mod n ) P :n kaikkien elementtien kesken , ts.

(jossa a i ja b i ovat ei-negatiivisia kokonaislukuja.)

Kun näitä suhteita on generoitu tarpeeksi (yleensä niin paljon, että tällaisten suhteiden lukumäärä on hieman suurempi kuin P :n koko ), voimme lineaaristen algebramenetelmien avulla kertoa nämä erilaiset suhteet siten, että kaikkien alkutekijöiden potenssit kääntyvät. tasaiseksi. Tämä antaa meille vertailukelpoisuuden neliöille modulo , jotka ovat muotoa a 2 ≡ b 2 (mod n ), joka voidaan muuntaa luvun n kertoimeksi , n = gcd ( a - b , n ) × gcd ( a + b , n ). Tällainen hajottaminen voi olla triviaali (eli n = n × 1), jolloin kannattaa yrittää uudelleen toisella suhdeyhdistelmällä. Jos olemme onnekkaita, saamme ei-triviaalin n: n jakajaparin ja algoritmi päättyy.

Esimerkki

Jaetaan luku n = 187 rationaalisen seulan avulla. Kokeillaan lukua B =7, jolle joukko P  = {2,3,5,7} toimii tekijöiden perustana. Ensimmäinen askel on tarkistaa, onko luku n jaollinen joukon P luvuilla . On selvää, että tapauksessa, jossa n on jaollinen jollakin näistä alkuluvuista, olemme löytäneet ratkaisun. 187 ei kuitenkaan ole jaollinen 2:lla, 3:lla, 5:llä tai 7:llä. Seuraavassa vaiheessa etsitään sopivia z -arvoja , sopivia lukuja ovat 2, 5, 9 ja 56. Neljä z -arvoa antavat suhteet modulo 187:

Nyt yhdistämme nämä suhteet eri tavoin ja päädymme tasaisiin tehoihin. Esimerkiksi,

Vaihtoehtoisesti yhtälöllä (3) on jo haluttu muoto:

Algoritmin rajoitukset

Rationaalinen seula, kuten lukukentän yleinen seula, ei voi saada lukujen hajotusta muotoa p m , jossa p on alkuluku ja m on kokonaisluku. Ongelma ei ole liian suuri - tilastollisesti tällaiset luvut ovat harvinaisia ​​ja lisäksi on yksinkertainen ja nopea prosessi tarkistaa, että tietyllä numerolla on tällainen muoto. Ilmeisesti tyylikkäin tapa on tarkistaa, onko 1 < b < log(n), käyttämällä Newtonin juurimenetelmän kokonaislukuversiota [2]

Suurin ongelma on löytää lukuja z siten, että sekä z että z + n ovat B -sileitä . Minkä tahansa B: n kohdalla B -sileiden lukujen osuus pienenee nopeasti numerokoon mukaan. Joten jos n on suuri (esimerkiksi sata numeroa), on vaikeaa tai lähes mahdotonta löytää tarpeeksi z :tä, jotta algoritmi toimisi. Yleisen lukukenttäseula-algoritmin etuna on, että jollekin positiiviselle kokonaisluvulle d (yleensä 3 tai 5) täytyy löytää tasaisia ​​kertalukua n 1/ d olevia lukuja tämän algoritmin vaatiman kertaluvun n sijaan .

Muistiinpanot

  1. Huomaa, että yleisiä tekijöitä ei yleensä voi peruuttaa vertailulla, mutta tässä tapauksessa ne voidaan peruuttaa, koska kaikki tekijäkannan alkuluvut ovat n : n koprimeja . Katso käänteinen kertolasku modulaarisessa aritmetiikassa
  2. R. Crandall, J. Papadopoulos, AKS-luokan primiteettitestien toteutuksesta Arkistoitu 5. lokakuuta 2012 Wayback Machinessa

Kirjallisuus