Det finnes flere metoder for å teste primality av heltall. Det beste valget avhenger av omstendighetene. Noen av metodene er raskere enn andre, mens noen populære testene er faktisk bare probabilistiske algoritmer som vil tidvis feilaktig karakteriserer en rekke som statsminister eller kompositt. Jo raskere metoder er primality tester, ikke faktorisering algoritmer, så selv om de viser et nummer for å være sammensatt, avslører de ingenting om primtallfaktorene. Denne artikkelen vil hjelpe deg til å utforske noen av metodene.
Trinn
Trial divisjon
- 1Trial divisjon er den enkleste testen for primality. Den er basert på definisjonen av et primtall. En rekke er prime hvis den ikke har noen divisors andre enn seg selv og en.
- 2La n være nummer du vil teste.
- 3Dele n av to. Hvis resultatet er et helt tall, da er n ikke prime fordi 2 er en faktor på n. Se på det siste sifferet, og hvis det er et partall, er det delelig med 2. Hvis ikke, fortsetter.
- 4Dele n av tre. Hvis resultatet er en, da er n ikke prime fordi tre er en faktor på n. Hvis ikke, fortsetter.
- 5Fortsett å dividere n ved hver tall mellom 2 og n 1/2 inkluderende. Hvis noen av dem dele jevnt, så n er ikke prime fordi du fant en faktor. Hvis n har ingen faktorer mindre enn kvadratroten, så n er primtall. Det er tilstrekkelig å kontrollere bare divisorer mindre enn eller lik n. 1/2 fordi hvis n = a * b, og a og b ikke kan overskride kvadratroten av n.
- 6Dette kan optimaliseres ved å hoppe testen divisjon med tallene som er åpenbart ikke prime. For eksempel, hoppe over hver til og med tall som er større enn to, og hvert multiplum av tre større enn tre.
Fermats lille teorem
- 1Teknisk sett er Fermats test en test for compositeness, snarere enn for primeness. Dette er fordi, hvis testen mislykkes, er antallet sikkert sammensatt, men hvis testen går, er tallet svært sannsynlig prime, men kan muligens være et sammensatt pseudoprime.
- 2La n være antall for å teste for primality.
- 3Velg hvilket som helst helt tall mellom 2 og et N -1.
- 4Beregn en n (mod n).
- Beregne dette effektivt ved hjelp kvadrere stedet for multiplikasjon når det er mulig. Det vil si, beregne tre 100 som (((((((3 2) * 3) 2) 2) 2) * 3) 2) 2, og ikke som 3 * 3 * 3 * 3 *... * 3. Redusere modulo n etter hver operasjon.
- 5Sjekk om en n = a (mod n). Hvis ikke, er n. Hvis sant, er n sannsynlig prime. Gjenta testen med forskjellige verdier for en kan øke tilliten i utfallet, men det er sjelden sammensatte tall som tilfredsstiller de Fermat tilstand for alle verdier av en. Disse pseudoprimes er Carmichael tall og den minste er 561.
Miller-Rabin
- 1Mølleren-rabin test fungerer på samme måte Fermats men håndterer patologiske tilfeller som de Carmichael tallene bedre.
- 2La n være et oddetall for å teste for primality.
- 3Faktor alle krefter 2 fra n -1, uttrykker det i form n -1 = 2 s * d hvor d er merkelig.
- 4Plukk en tilfeldig nummer en mellom 2 og n -1.
- 5Beregn en d (mod N). Hvis en d = 1 eller -1 (mod N), deretter n passerer Miller-Rabin test og er sannsynligvis primtall.
- 6Hvis ikke, er å beregne en 2-D, A 4 d,... og en 2 s -1 d. Hvis en av disse er lik -1 (mod N), deretter n er også passerer og er sannsynligvis primtall.
- 7Hvis n passerer miller-rabin test for noen verdi av en, prøv en annen en å bedre tilliten til resultatet av testen.
- 8Hvis n er faktisk, vil det passere med en hvilken som helst verdi av en. Hvis n er sammensatt, vil den mislykkes i minst tre fjerdedeler av verdiene av en.
Tips
- Mens rettssaken divisjon er tregere enn mer sofistikerte metoder for store tall, er det fortsatt ganske effektiv for små tall. Selv for primality testing av store tall, er det ikke uvanlig å først sjekke for små faktorer før du bytter til et mer avansert metode når ingen små faktorer er funnet.
- De 168 primtall under 1000 er: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997
Ting du trenger
- Working ut verktøy, slik som papir og penn eller en datamaskin