I talteorin är Lucas primalitetsteste primalitetstestet för ett naturligt tal n ; för att det ska fungera måste du känna till faktoriseringen. För ett primtal n utgör primtalsfaktorerna för talet , tillsammans med någon bas a , ett Pratt-certifikat , som gör att man kan bevisa i polynomtid att n är ett primtal.
Låt n > 1 vara ett naturligt tal. Om det finns ett heltal en sådan att och
och för valfri primtalsdelare q av talet
då är n primtal.
Om det inte finns något sådant tal a , så är n ett sammansatt tal .
Om n är primtal är restgruppen cyklisk, det vill säga den har en generator vars ordning sammanfaller med gruppens ordning , vilket innebär att en jämförelse utförs för varje primtalsdelare av talet :
Om n är sammansatt, då antingen och sedan , eller . Om vi antar att för detta också är a uppfyllt , då, eftersom vi finner att gruppen har ett ordningselement , betyder det att den delar sig , vilket motsäger det faktum att för sammansatt n .
Enligt kontrapositionslagen får vi Lucas-kriteriet.
Låt oss till exempel ta n = 71. Sedan . Låt oss välja slumpmässigt . Vi beräknar:
Låt oss kolla jämförelserna för :
Tyvärr . Därför kan vi ännu inte hävda att 71 är prime.
Låt oss prova ett annat slumpmässigt nummer a , välj . Vi beräknar:
Kontrollera jämförelserna igen för :
Således är 71 prime.
Observera att för snabb beräkning av exponenter modulo, används algoritmen för binär exponentiering med att ta resten av modulo n efter varje multiplikation.
Observera också att för ett enkelt n , följer det av den generaliserade Riemann-hypotesen att det bland de första talen finns minst en generator av gruppen , så det kan villkorligt hävdas att basen a kan hittas i polynomtid.
Algoritmen, skriven i pseudokod , är följande:
Inmatning : n > 2 är ett udda tal som testas för primalitet; k - en parameter som bestämmer testets noggrannhet Slutsats : enkelt om n är primtal, annars sammansatt eller möjligen sammansatt ; Vi definierar alla primtalare . Slinga1: Välj slumpmässigt a från intervallet [2, n − 1] Om du returnerar en komposit Annat Slinga 2: För alla primtal : Om Om vi inte kontrollerade jämförelsen för alla sedan fortsätter vi att köra Loop2 annars returnera en enkel Annars, återgå till Loop1 Det är möjligt att returnera en komposit .Talteoretiska algoritmer | |
---|---|
Enkelhetstest | |
Hitta primtal | |
Faktorisering | |
Diskret logaritm | |
Hitta GCD | |
Modulo aritmetik | |
Multiplikation och division av tal | |
Beräkna kvadratroten |