Nightingale-Strassen-testi on todennäköisyyspohjainen primaalisuustesti, jonka Robert Martin Nightingale löysi 1970-luvulla yhdessä Volker Strassenin kanssa. [1] Testi määrittää aina oikein, että alkuluku on alkuluku, mutta yhdistelmäluvuille se voi jollain todennäköisyydellä antaa väärän vastauksen. Testin tärkein etu on, että toisin kuin Fermatin testi , se tunnistaa Carmichael-luvut yhdistelmälukuina.
1600-luvulla Fermat todisti lausunnon, jota myöhemmin kutsuttiin Fermatin pieneksi lauseeksi ja joka toimii Fermatin primaalisuustestin perustana :
Jos n on alkuluku ja a ei ole jaollinen n :llä , niin .Tämä tietyn n :n tarkistus ei vaadi paljon laskentaa, mutta päinvastoin ei pidä paikkaansa. Siten on olemassa Carmichael-lukuja, jotka ovat yhdistelmälukuja, joille Fermatin pienessä lauseessa annettu lause pätee kaikille tietyn luvun koprime-kokonaisluvuille. Vuonna 1994 osoitettiin, että tällaisia lukuja on äärettömän paljon. [2] Fermat-testin havaitun puutteen yhteydessä on tullut ajankohtaiseksi ongelma todennäköisyystestien luotettavuuden lisäämisestä. Lehmann ehdotti ensimmäisenä testiä, joka seuloa Carmichael-luvut yhdistelmänä. Tämä puute puuttuu myös Solovey-Strassenin ja Miller-Rabinin testeistä johtuen vahvemmasta poistumiskriteeristä kuin Fermatin pieni lause. Riippumatta toisistaan, D. Lemaire vuonna 1976 ja R. Nightingale yhdessä F. Strassenin kanssa vuonna 1977 osoittivat, että Carmichaelin luvuille, jotka ovat komposiittisia ja samalla pseudoyksinkertaisia, ei ole analogia. [3] Tämän perusteella ehdotettiin Solovay-Strassenin primaalisuustestiä, joka julkaistiin vuonna 1977, lisäyksiä siihen vuonna 1978.
Solovay-Strassenin testi perustuu Fermatin pieneen lauseeseen ja Jacobi-symbolin ominaisuuksiin [4] :
Tämän vertailun toteuttavia yhdistelmälukuja n kutsutaan Euler-Jacobin pseudoalkuluvuiksi kannassa a .
Todiste [5]Solovay-Strassen-algoritmi [6] parametroidaan kierrosten lukumäärällä k . Jokaisella kierroksella valitaan satunnaisesti numero a < n . Jos gcd ( a , n ) > 1, niin päätetään, että n on komposiitti. Muussa tapauksessa vertailun oikeellisuus tarkistetaan . Jos se ei täyty, päätetään, että n on yhdistelmä. Jos tämä vertailu pitää paikkansa, a todistaa , että n on prime . Sitten valitaan toinen satunnainen a ja toimenpide toistetaan. Kun on löydetty k alkulukua k kierrokselta, päätellään, että n on alkuluku, jonka todennäköisyys on .
Pseudokoodissa algoritmi voidaan kirjoittaa seuraavasti:
Syöte : > 2, testaa pariton luonnollinen luku; , parametri, joka määrittää testin tarkkuuden. Tulos : komposiitti , tarkoittaa täsmälleen komposiittia; luultavasti prime tarkoittaa, että se on luultavasti prime. i = 1, 2, ..., : = satunnainen kokonaisluku välillä 2 - , mukaan lukien; jos gcd (a, n) > 1, niin : print , joka on yhdistelmä, ja stop . if , then : tulos , joka on yhdistelmä , ja stop . muuten johtaa , joka on prime todennäköisyydellä , ja lopeta .Tarkistetaan yksinkertaisuuden vuoksi luku n = 19. Valitsemme tarkkuusparametriksi k = 2.
k = 1 Valitsemme satunnaisluvun a = 11; 2 < a < n - 1 Tarkista ehto gcd(a,n)>1 gcd(11,19)=1; sitten tarkistamme vertailun . Saimme sen, joten siirrymme seuraavaan iteraatioon k = 2 Valitsemme satunnaisluvun a = 5; 2 < a < n - 1 Tarkista ehto gcd(a,n)>1 gcd(5,19)=1; joten tarkistamme vertailun ja tämä oli viimeinen iteraatio, joten päätämme, että 19 on alkuluku, jolla on todennäköisyystestin nimi | todennäköisyys( että luku on yhdistelmä ) [7] | muistiinpanoja |
---|---|---|
Maatila | ei tunnista Carmichael-lukuja yhdistelmälukuina | |
Lehmann | ||
Nightingale - Strassen |
Todennäköisyystestejä käytetään faktorointiongelmaan perustuvissa järjestelmissä , kuten RSA tai Rabinin kaava . Käytännössä Solovey-Strassen-testin luotettavuusaste ei kuitenkaan ole riittävä, vaan käytetään Miller-Rabin-testiä . Lisäksi käyttämällä yhdistettyjä algoritmeja, kuten kokeilujakoa ja Miller-Rabin-testiä, oikealla parametrivalinnalla voit saada parempia tuloksia kuin käyttämällä jokaista testiä erikseen. [7]
Vuonna 2005 kansainvälisessä Bit+-konferenssissa "Informational Technologies -2005" A. A. Balabanov, A. F. Agafonov, V. A. Ryku ehdottivat modernisoitua Solovay-Strassen-testiä. Nightingale-Strassen-testi perustuu Jacobi-symbolin laskemiseen, joka vie aikaa, joka vastaa . Parantamisen idea on, että Gaussin toisen asteen vastavuoroisuuslauseen mukaisesti siirrytään Jacobi-symbolin käänteisarvon laskemiseen, mikä on yksinkertaisempi menettely. [8] .
Lukuteoreettiset algoritmit | |
---|---|
Yksinkertaisuustestit | |
Alkulukujen löytäminen | |
Faktorisointi | |
Diskreetti logaritmi | |
GCD:n löytäminen |
|
Modulo-aritmetiikka | |
Lukujen kerto- ja jakolasku | |
Neliöjuuren laskeminen |