A Nightingale-Strassen teszt egy valószínűségi primalitási teszt , amelyet az 1970-es években Robert Martin Nightingale és Volker Strassen fedezett fel. [1] A teszt mindig helyesen határozza meg, hogy egy prímszám prím, de összetett számokra bizonyos valószínűséggel helytelen választ adhat. A teszt fő előnye, hogy a Fermat-teszttel ellentétben a Carmichael-számokat összetettként ismeri fel .
A 17. században Fermat bebizonyította a később Fermat kis tételének nevezett állítást, amely Fermat primalitástesztjének alapjául szolgál :
Ha n prím, és a nem osztható n -nel , akkor .Ez az ellenőrzés egy adott n -re nem igényel sok számítást, de fordítva nem igaz. Így vannak olyan Carmichael-számok, amelyek összetettek, amelyekre a Fermat-féle kis tételben adott állítás minden adott számmal rendelkező másodlagos egészre érvényes. 1994-ben kimutatták, hogy végtelenül sok ilyen szám létezik. [2] A Fermat-teszt feltárt hiányossága kapcsán aktuálissá vált a valószínűségi tesztek megbízhatóságának növelésének problémája. Lehmann volt az első, aki olyan tesztet javasolt, amely a Carmichael-számokat összetettként szűri ki. Ez a hiányosság a Solovey-Strassen- és Miller-Rabin-tesztekből sem hiányzik, mivel a kimaradási kritérium erősebb, mint Fermat kis tétele. Egymástól függetlenül D. Lemaire 1976-ban és R. Nightingale F. Strassennel 1977-ben bebizonyította, hogy nincs analógja az összetett és egyben Euler-féle álegyszerű Carmichael-számoknak. [3] Ennek alapján javasolták a Solovay-Strassen-féle elsődlegességi tesztet, amely 1977-ben jelent meg, kiegészítései 1978-ban.
A Solovay-Strassen teszt Fermat kis tételén és a Jacobi szimbólum tulajdonságain alapul [4] :
Az összehasonlítást kielégítő n összetett számokat a bázisban Euler-Jacobi pszeudoprímeknek nevezzük .
Bizonyíték [5]A Solovay-Strassen algoritmust [6] a k körök számával paraméterezzük . Minden körben véletlenszerűen kiválasztunk egy a < n számot . Ha gcd ( a , n ) > 1, akkor n összetett. Ellenkező esetben az összehasonlítás érvényességét ellenőrizzük . Ha nem teljesül, akkor az a döntés születik, hogy n összetett. Ha ez az összehasonlítás igaz, akkor a tanúja az n prímnek . Ezután egy másik véletlen a -t választunk , és az eljárást megismételjük. Miután k körben találtunk k primalitástanút , arra a következtetésre jutunk, hogy n egy valószínűségű prímszám .
A pszeudokódban az algoritmus a következőképpen írható fel:
Bemenet : > 2, tesztelje a páratlan természetes számot; , a teszt pontosságát meghatározó paraméter. Kimenet : kompozit , pontosan kompozitot jelent; valószínűleg prím azt jelenti, hogy valószínűleg prím. ha i = 1, 2, ..., : = véletlenszerű egész szám 2-től ig , beleértve; ha gcd (a, n) > 1, akkor : print , ami összetett, és stop . if , akkor : összetett kimenet , és stop . _ ellenkező esetben származtassa , ami valószínűséggel prím , és állítsa le .Ellenőrizzük az n = 19 számot az egyszerűség kedvéért. A k = 2 pontossági paramétert választjuk.
k = 1 Válasszunk egy véletlen számot a = 11; 2 < a < n - 1 Ellenőrizze a gcd(a,n)>1 feltételt gcd(11,19)=1; majd ellenőrizzük az összehasonlítást , ezt kaptuk, ezért továbblépünk a következő iterációra k = 2 Válasszunk egy véletlen számot a = 5; 2 < a < n - 1 Ellenőrizze a gcd(a,n)>1 feltételt gcd(5,19)=1; ezért ellenőrizzük az összehasonlítást , és ez volt az utolsó iteráció, ezért arra a következtetésre jutunk, hogy a 19 egy prímszám, amelynek valószínűségeteszt neve | valószínűség( hogy a szám összetett ) [7] | jegyzetek |
---|---|---|
Tanya | nem ismeri fel a Carmichael-számokat összetettnek | |
Lehmann | ||
Nightingale - Strassen |
Valószínűségi teszteket használnak a faktorizációs problémán alapuló rendszerekben , mint például az RSA vagy a Rabin-séma . A gyakorlatban azonban a Solovey-Strassen teszt megbízhatósági foka nem elegendő, helyette a Miller-Rabin tesztet használják . Sőt, kombinált algoritmusokkal, mint például a próbaosztás és a Miller-Rabin teszt, a paraméterek megfelelő megválasztásával jobb eredményeket érhet el, mint az egyes teszteket külön-külön. [7]
2005-ben a Bit+ "Információs Technológiák -2005" Nemzetközi Konferencián A. A. Balabanov, A. F. Agafonov, V. A. Ryku korszerűsített Solovay-Strassen tesztet javasolt. A Nightingale-Strassen teszt a Jacobi-szimbólum kiszámításán alapul, ami a -val egyenértékű időt vesz igénybe . A javítás ötlete az, hogy a Gauss-féle másodfokú reciprocitás tételének megfelelően menjen a Jacobi-szimbólum reciproka értékének kiszámításához, ami egy egyszerűbb eljárás. [8] .
Számelméleti algoritmusok | |
---|---|
Egyszerűség tesztek | |
Prímszámok keresése | |
Faktorizáció | |
Diszkrét logaritmus | |
GCD keresése | |
Modulo aritmetika | |
Számok szorzása és osztása | |
A négyzetgyök kiszámítása |