Er zijn verschillende methoden voor het testen van primality van gehele getallen. De beste keuze hangt af van de omstandigheden. Sommige van de methoden zijn sneller dan anderen, terwijl sommige populaire tests zijn eigenlijk slechts probabilistische algoritmen die af valselijk zal karakteriseren een aantal als premier of composiet. De snellere methoden zijn primaliteit testen, niet algoritmen factorisatie, dus zelfs als ze een nummer te zijn samengesteld, ze onthullen niets over zijn priemfactoren. Dit artikel zal u helpen om een paar van de methoden te onderzoeken.
Stappen
Trial divisie
- 1Trial divisie is de meest eenvoudige test voor primaliteit. Het is gebaseerd op de definitie van een priemgetal. Een getal is een priemgetal als het geen ander dan zichzelf delers en een.
- 2Laat n het nummer dat u wilt testen.
- 3Verdeel n door 2. Als het resultaat een geheel getal is, dan is n geen priemgetal omdat 2 een factor n. Kijk naar het laatste cijfer en als het een even getal, het is deelbaar door 2. Zo niet, ga dan verder.
- 4Verdeel n door 3. Indien het resultaat een, dan is n geen priemgetal omdat 3 is een factor n. Zo niet, ga dan verder.
- 5Doorgaan met het splitsen n door elk getal tussen 2 en n 1/2 inclusive. Als een van hen gelijkmatig verdelen, dan is n niet priem omdat je een factor gevonden. Als n geen factoren minder dan zijn wortel, dan is n een priemgetal is. Het is voldoende om alleen controleren delers kleiner dan of gelijk aan n 1/2 omdat als n = a * b, dan a en b niet beide hoger zijn dan de vierkantswortel van n.
- 6Dit kan worden geoptimaliseerd door het overslaan van de test deling door nummers die uiteraard niet prime. Bijvoorbeeld, sla elk even getal groter dan twee en elk veelvoud van drie meer dan drie.
Kleine stelling van Fermat
- 1Technisch, Fermat-test is een test voor compositeness, eerder dan voor primeness. Dit is omdat, als de test mislukt, het nummer is samengesteld zeker, maar als de test geeft het aantal zeer waarschijnlijk eerste, maar kan mogelijk een samengesteld pseudoprime zijn.
- 2Laat n het aantal te testen op primaliteit.
- 3Kies elk geheel getal a tussen 2 en n -1.
- 4Berekenen een n (mod n).
- Berekenen deze efficiënt door gebruik kwadratuur plaats van vermenigvuldiging waar mogelijk. Dat is, berekenen 3 100 als (((((((3, 2) * 3) 2) 2) 2) * 3) 2) 2, minder 3 * 3 * 3 * 3 *... * 3. Verminderen modulo n na elke operatie.
- 5Controleer of er een n = a (mod n). Zo niet, n. Als dat waar is, is n waarschijnlijk priem is. De test met verschillende waarden voor kan het vertrouwen in de uitkomst verhogen, hoewel er zelden samengestelde getallen die de Fermat voorwaarde voldoet voor alle waarden van a. Deze pseudoprimes zijn de Carmichael getallen en de kleinste is 561.
Miller-Rabin
- 1De molenaar-Rabin test werkt op dezelfde wijze als Fermat, maar behandelt pathologische gevallen als de carmichael nummers beter.
- 2Laat n een oneven aantal te testen voor primaliteit.
- 3Factor alle machten van 2 uit n -1, uit te drukken in de vorm n -1 = 2 s * d waarbij d oneven is.
- 4Kies een willekeurig getal a tussen 2 en n -1.
- 5Berekenen een d (mod n). Als een d = 1 of -1 (mod n), dan is n passeert de Miller-Rabin-test en is waarschijnlijk prime.
- 6Anders berekenen 2 d, 4 d,... en een 2 s -1 d. Als een van deze gelijk -1 (mod n), dan n is en geeft waarschijnlijk prime.
- 7Als n passeert de molenaar-Rabin test voor een bepaalde waarde van een, probeer dan een andere een om het vertrouwen in de uitkomst van de test te verbeteren.
- 8Als n in feite zal het passen bij elke waarde van een. Wanneer n is samengesteld, zal het falen van ten minste driekwart van de waarden van een.
Tips
- Terwijl proces deling trager dan meer geavanceerde methoden voor grote aantallen, is het nog zeer efficiënt voor kleine aantallen. Zelfs voor priemtesten grote aantallen is het niet ongewoon om eerst te kleine factoren voor het schakelen naar een meer geavanceerde methode wanneer geen kleine factoren gevonden.
- De 168 priemgetallen onder 1000 zijn: 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
Dingen die je nodig hebt
- Uitwerken van instrumenten, zoals papier en pen of een computer