Bailey-Pomeranz-Selfridge-Wagstaff-testen ( BPSW , BPSW ) er en probabilistisk primalitetstest , der afgør, om et tal er sammensat eller sandsynligvis primtal . Det er opkaldt efter dets opfindere - Robert Bailey, Karl Pomeranz , John Selfridge, Samuel Wagstaff.
Testen kombinerer Fermats test for stærk pseudosimplicitet med base 2 og Lukes test for stærk pseudosenkelhed . For Fermat- og Luke-testene er der separate lister over pseudoprimer, det vil sige sammensatte tal, der består primaalitetstesten. For eksempel er de første ti stærke pseudoprimer til Fermats base 2-forsøg:
2047, 3277, 4033, 4681, 8321, 15841, 29341, 42799, 49141 og 52633 [1]De første ti pseudoprimer i Lucas-testen (med parametre ):
5459, 5777, 10877, 16109, 18971, 22499, 24569, 25199, 40309 og 58519 [2] .Testens styrke er, at der ikke er nogen kendte skæringspunkter mellem Fermats lister over pseudoprimer og Lucas' pseudoprimer. Der er grund til at tro, at der som regel er forskellige typer numre på disse lister. For eksempel har base-2 pseudoprimer en tendens til at falde ind i restklassen 1 modulo m for mange små m, mens Lucas pseudoprimer har tendens til at falde ind i restklassen −1 modulo [3] : §6 [4 ] :Tabel 2 & §5 . Som et resultat heraf er et tal, der består både den stærke Fermat-test og den stærke Luke-test, meget sandsynligt, at være prime.
Intet sammensat tal mindre end 2 64 (hvilket er omtrent lig med 1,845 10 19 ) består BPSV-testen [5] . Denne test kan således betragtes som en deterministisk primalitetstest for tal mindre end den angivne grænse. Der kendes heller ikke endnu noget sammensat tal, større end grænsen, som består testen.
I 1980 tilbød Pomeranz, Selfridge og Wagstaff en belønning på $30 til enhver, der kunne finde et modeksempel, det vil sige finde et sammensat tal, der bestod denne test. Richard Guy troede fejlagtigt, at belønningen var $620, men han blandede Luke- og Fibonacci-sekvenserne , og hans bemærkninger viste sig kun at gælde for én af Selfridges formodninger [6] . Fra juni 2014 er præmien ikke blevet gjort krav på. Pomeranz' heuristiske argument indikerer dog, at der er uendeligt mange sådanne modeksempler [7] . Derudover konstruerede Chen og Green [8] [9] et sæt S bestående af 1248 primtal, således at der blandt de 21248 produkter af forskellige primtal i S kan være omkring 740 modeksempler. De overvejede dog en svagere BPSV-test, der bruger Fibonacci-testen i stedet for Luke-testen.
Lad være et ulige naturligt tal, der skal kontrolleres for prime.
Kommentarer:
Der er betydelig overlapning i listerne over pseudoprimer af forskellige årsager.
Hvis er pseudoprime af en eller anden grund , så er det sandsynligvis pseudoprime af mange andre grunde [11] .
For eksempel pseudosimple til base 2. Bailey og Wagstaff beviste [4] , at der er 100 værdier (modulo 341), for hvilke 341 pseudosimple at basere . (De første ti af dem er: 1, 2, 4, 8, 15, 16, 23, 27, 29 og 30). Antallet af sådanne sammenlignet med normalt meget mindre.
Derfor, hvis - pseudo-simple i form af , er der stor sandsynlighed for, at det er pseudo-simpelt i form af en anden årsag. For eksempel er der 21853 base 2 pseudoprimer fra 0 til 25· 109 . Dette er kun omkring to tal pr. million af alle de ulige tal i dette segment. Imidlertid:
29341 er den mindste pseudoprime i base 2 til 10 (og i alle 7-glatte baser ). Dette indikerer, at probabilistiske primalitetstests ikke er uafhængige af forskellige årsager, så at køre en Fermat-test på flere og flere resultater vil luge ud færre og færre pseudoprimer hver gang. På den anden side tyder beregningerne op til 2 64 nævnt ovenfor på, at Fermat- og Luke-testene er uafhængige, så kombinationen af disse tests er en kraftfuld primatitetstest, især når man bruger disse tests stærke former.
Der er også skæringspunkter mellem stærke pseudoprimer på forskellige grunde. For eksempel er 1373653 den mindste stærke pseudoprime i alle baser fra 2 til 4 (og i alt 3-glatte ), og 3215031751 er den mindste stærke pseudoprime i alle baser fra 2 til 10 (og i alt 7-glatte ). Arnold [12] præsenterer et 397-cifret sammensat tal N, som er stærkt pseudoprime i alle baser mindre end 307 (og i alle 293-glatte ). Da N er et Carmichael tal , vil N også være (ikke nødvendigvis stærkt) pseudo-primtal i alle baser mindre end p, hvor p er den mindste 131-cifrede primtal divisor af N. Samtidig viser en hurtig optælling, at N er ikke et pseudo-primtal Lucas-tal, hvis D, P, Q blev valgt ved metoden beskrevet ovenfor, så BPSV-testen vil afgøre, at dette tal er sammensat.
Følgende computersystemer og softwarepakker bruger forskellige versioner af BPEP-testen.
Funktionerne IsPrimei Maple [13] , Mathematica [14] , Sage [15] og funktioner og PrimeQi PARI/GP [ 16] bruger en kombination af Miller-Rabin-testen (stærk Fermat-test) og Luke-testen. En funktion i Maxima bruger en sådan test for tal større end 341550071728321 [17] . is_pseudoprimeisprimeispseudoprimePrimep
FLINT - biblioteket indeholder funktioner , der bruger den kombinerede test, samt andre funktioner, der bruger Fermat- og Luc-testene separat 18] . n_is_probabprimen_is_probabprime_BPSW
En klasse BigIntegeri standardversioner af Java og i open source-versioner såsom OpenJDK har en isProbablePrime. Denne metode udfører en eller flere Miller-Rabin-tests tilfældigt. Hvis antallet, der testes, er 100 eller flere bits, udfører denne metode også Luke-testen, som kontrollerer, at [19] [20] . Brugen af tilfældige baser i Miller-Rabin-tests har både fordele og ulemper sammenlignet med kun at teste base 2, som i BPSV-testen. Fordelen ved at bruge tilfældige baser er, at man kan få et sandsynlighedsestimat på, at n er sammensat. Ulempen er, at det i modsætning til BPSV-testen ikke kan siges med sikkerhed, at hvis n er mindre end en fast binding, såsom 2 64 , så er n primtal.
I Perl indeholder modulerne Math::Primality[21] og Math::Prime::Util[22] [23] funktioner til at udføre den stærke BPSS-test, samt separate funktioner til den stærke pseudoprimalitetstest og den stærke Luke-test. Python -biblioteket NZMATH [24] indeholder en stærk pseudoprimalitetstest og en stærk Luke-test, men indeholder ikke en kombination af begge.
Funktionen mpz_probab_prime_pfra GNU Multiple Precision Arithmetic Library bruger Miller-Rabin-testen, men bruger ikke Luke-testen [25] . Funktionerne IsProbablePrimeog IsProbablyPrimefra Magma udfører 20 Miller-Rabin-tests for tal større end 34·10 13 , men bruger ikke deres kombination med Lucas-testen [26] .
Talteoretiske algoritmer | |
---|---|
Enkelthedstest | |
At finde primtal | |
Faktorisering |
|
Diskret logaritme | |
Finder GCD | |
Modulo aritmetik | |
Multiplikation og division af tal | |
Beregning af kvadratroden |