Luke's Simplicity Test

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 7 april 2021; verifiering kräver 1 redigering .

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.

Beskrivning

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 .

Bevis

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.

Exempel

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.

Algoritm

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 .

Se även

Litteratur