Lucas -Lehmer-testet ( eng. Lucas-Lehmer-testet , förkortat LLT ) är ett polynomiskt , deterministiskt och ovillkorligt (det vill säga inte beroende av obevisade hypoteser) primalitetstest för Mersenne-tal . Formulerad av Édouard Lucas 1878 och bevisad av Lemaire 1930 [ ⇨ .
Givet ett primtal tillåter testet polynomtid för bitlängden för Mersennetalet för att avgöra om det är primtal eller sammansatt . Beviset för testets giltighet förlitar sig starkt på Lucas-funktionerna , som gjorde det möjligt att generalisera Lucas-Lehmer-testet till några tal vars form skiljer sig från Mersenne-talen .
Tack vare detta test har de största kända primtalen nästan alltid varit Mersenne-primtal, även innan datorernas tillkomst ; det är han som ligger till grund för GIMPS distributed computing- projektet , som är engagerad i sökandet efter nya Mersenne-primtal. Det är också intressant för dess samband med jämna perfekta tal .
Testet är baserat på följande kriterier för enkelheten hos Mersenne-tal [1] :
Låt vara ett enkelt udda tal. Ett Mersennetal är primtal om och endast om det delar den :e termen i sekvensen [2] ,ges rekursivt : |
För att kontrollera enkelheten beräknas talföljden modulo numret (det vill säga, inte talen i sig beräknas , vars längd växer exponentiellt , men resten efter division med , vars längd begränsas av bitar ). Det sista numret i denna sekvens kallas Lucas-Lehmer-resten [3] . Således är ett Mersenne-tal primtal om och endast om talet är ett udda primtal och Lucas-Lehmer-resten är noll. Algoritmen i sig kan skrivas som pseudokod [4] :
LLT (p) ►Inmatning: udda primtal sid S=4 k = 1 M = 2 p − 1 Till k != p - 1 S = ((S × S) − 2) mod M k += 1 End of loop Om S = 0 exekvera Return SIMPLE annars Return COMPOUND SlutvillkorVärdena för vilka primalitetskriteriet är giltigt bildar en sekvens: [5] [6] [7] .
Det är inte nödvändigt att kontrollera alla udda primtal i direkt uppräkning, eftersom vissa Mersenne-tal av en speciell form alltid är sammansatta, vilket till exempel följer av följande teorem som bevisats av Euler [ 8] :
Om tal och är primtal, då . |
Ett tillvägagångssätt för beviset är baserat på användningen av Lukas funktioner :
var finns rötterna till andragradsekvationen
med en diskriminant , och och är coprime .
I synnerhet används vissa egenskaper hos dessa funktioner i beviset, nämligen [9] :
ett. 2. 3. 4. Om , , och , sedan 5. Om är prime, så att samprima med , dividerar sedan med , där och är Legendre-symbolen .Bevisschema [9] :
Från egenskap 4. modulo för , , följer det:
,och av fastighet 2.
,det är därför
och
, så om är prime, så delar den sig också från de två sista egenskaperna
Vidare från fastigheterna 1. och 2.
,men av fastighet 3.
,det vill säga delar , och därmed .
Om den delar sig så följer det av beviset på nödvändigheten att den delar och . samprima med av egenskap 1., och efter egenskap 2. - delar . Men då kan varje primtalsdelare av talet representeras som , det vill säga primtal.
Kriteriet på enkelhet föreslogs av den franske matematikern Lucas 1878 . Lucas visade i synnerhet att algoritmen tillåter primalitetstestning för primtal [9] . År 1930 bevisade den amerikanske matematikern Lehmer till fullo giltigheten av kriteriet för alla udda primtal i sin avhandling för doktorsexamen i filosofi [1] .
År 1952, med stöd av Lemaire, utförde Robinson beräkningar på SWAC -datorn med hjälp av Luc-Lehmer-testet, vilket resulterade i upptäckten av primtal och . Senare samma år upptäcktes , och [10] .
Den enkla implementeringen av testet och tillväxten av datorkraften hos datorer gjorde det möjligt för praktiskt taget vem som helst att söka efter Mersenne-primtal. Så 1978 bevisade två amerikanska gymnasieelever Laura Nickel och Kurt Knoll (Lemaire lärde dem sifferteori) enkelheten i siffror i tre års arbete med CDC Cyber 176 superdator vid University of California [11] .
Den största kända Mersenne-primen för 2018, erhållen med Lucas-Lehmer-testet, är .
Kravet på uddahet i kriteriets tillstånd är väsentligt, eftersom det är enkelt , men .
Talet är primtal [13] . Verkligen,
Att tillämpa testet på ett nummer visar att det är sammansatt [13] :
Verkligen ,.
Det finns två huvudoperationer i testet som övervägs: kvadrering och modulodelning . En effektiv algoritm för modulo ett Mersenne-tal på en dator (faktiskt reducerad till några bitskiftsoperationer ) ges av följande teorem [4] :
För ett heltal och ett Mersenne -tal sker modulokongruens ,dessutom är multiplikation med modulo ekvivalent med en vänstercyklisk förskjutning med en bit (om , så utförs förskjutningen i motsatt riktning). |
Till exempel, för att beräkna resten av att dividera ett tal med , måste du konvertera det ursprungliga talet till binär form: , och, enligt satsen, dela upp i två delar varje gång det överskrider :
När du använder denna modulo-metod kommer testets beräkningskomplexitet att bestämmas av kvadreringsalgoritmens komplexitet. Längden är lite, och algoritmen för att multiplicera två tal, till exempel "i en kolumn", har komplexitet [4] . Eftersom kvadrering sker en gång i testet är algoritmens beräkningskomplexitet [14] . Testet kan påskyndas genom att använda snabba multiplikationsalgoritmer för stora heltal, som multiplikationsmetoden Schönhage-Strassen . Testets komplexitet i detta fall kommer att vara .
Tillståndet i testet kan försvagas [8] och kräver endast det , vilket omedelbart innebär:
.År 1930 härledde Lemaire ett primatitetskriterium för siffror av formen , där , och 1969 modifierade Hans Riesel Lucas-Lehmer-testet för nummer av denna form, som senare kompletterades av Stechkin [9] . Det är möjligt att generalisera testet till siffror av formen [15] .
Williams bevisade primalitetskriterier som liknar Luc-Lehmer-testet för siffror av formenoch, såväl som för vissa nummer av formen, där är ett primtal [9] .
Det finns ett mer allmänt primatitetstest , som är tillämpligt för alla naturliga tal , om den fullständiga eller partiella faktoriseringen av numret eller [4] är känd .
Tack vare Lucas-Lehmer-testet har Mersenne-primtal ledningen som de största kända primtalen , även om Mersenne-talen nästan alltid var de största primtalen redan innan testet existerade. Så, 1588, enkelheten av siffrorna och bevisades [16] .
Euklid bevisade att vilket tal som helst i formen är perfekt om är primtal, och Euler visade att alla jämna perfekta tal har denna form [17] ; så Luc-Lehmer-testet låter dig faktiskt hitta alla jämna perfekta siffror.
Det är detta test som ligger till grund för GIMPS distribuerade datorprojekt , som letar efter nya Mersenne-primtal [18] , även om det ännu inte har bevisats att det finns oändligt många av dem [19] .
Detta test används också för att testa hårdvara . Till exempel, 1992, testade AEA Technology en ny superdator från Cray med hjälp av ett program skrivet av Slowinski för att hitta Mersenne-primtal. Som ett resultat upptäcktes ett primtal under 19 timmars programdrift [20] .
Talteoretiska algoritmer | |
---|---|
Enkelhetstest | |
Hitta primtal | |
Faktorisering | |
Diskret logaritm | |
Hitta GCD | |
Modulo aritmetik | |
Multiplikation och division av tal | |
Beräkna kvadratroten |