Verificați dacă un număr este un număr prime
Numerele prime sunt numere care se divizează singure și se numesc 1 - alte numere compozit
numere. Când vine vorba de a testa dacă un număr este un număr prime, există mai multe opțiuni. Unele dintre aceste metode sunt relativ simple, dar absolut nepotrivite pentru numere mai mari. Alte teste care sunt adesea folosite sunt de fapt algoritmi compleți bazați pe unul probabilitate care uneori consideră în mod incorect un număr ca un număr prime. Citiți la pasul 1 pentru a afla cum vă puteți testa dacă aveți de-a face cu un număr prime.pași
Metoda 1
Încercați să distribuiți
Încercarea de a diviza este de departe cea mai ușoară cale de a testa un număr. Pentru numere mici este de obicei cea mai rapidă cale. Testul se bazează pe definirea unui număr prime: un număr este un număr prime dacă este divizibil numai de la sine și 1.
1
set n este numărul pe care doriți să îl testați. Împărțiți numărul n cu toate numerele întregi divizibile. Pentru numere mai mari, cum ar fi n = 101, este extrem de impractic să se împartă cu orice număr întreg mai mic decât n. Din fericire, există mai multe trucuri pentru a reduce numărul de factori de testat.
2
Determinați dacă n chiar. Toate numerele parțiale sunt complet divizibile prin 2. Prin urmare, dacă n este egal, puteți spune acest lucru n este un număr compozit (și, prin urmare, nu este un număr prime). Pentru a determina rapid dacă un număr este egal, trebuie să fiți atenți doar la ultima cifră. Dacă ultima cifră este 2, 4, 6, 8 sau 0, atunci numărul este egal și, prin urmare, nu este prime.
Singura excepție de la această regulă este numărul 2 însuși, care, deoarece este divizibil prin el însuși și 1, este de asemenea un număr prime. 2 este singurul număr egal prime.3
parte n cu orice număr între 2 și n-1. Deoarece un număr prime nu are alți factori decât el și 1 și deoarece factorii de întregi sunt mai mici decât produsul lor, verificarea divizibilității unui întreg mai mic decât n și mai mare de 2 va determina dacă n este un număr prime. Începem după 2, deoarece numerele chiar (multipli de 2) nu pot fi numere prime. Acest lucru este departe de a fi o modalitate eficientă de a testa, după cum veți vedea mai jos.
De exemplu, dacă vrem să folosim această metodă pentru a testa dacă 11 este prim sau nu, ar trebui să împărțim 11 câte 3, 4, 5, 6, 7, 8, 9 și 10, de fiecare dată când căutăm o intregul raspuns fara odihna. Deoarece niciuna dintre aceste numere nu se potrivește pe deplin 11, putem spune că 11 este una numărul primei.4
Pentru a economisi timp, testați doar până la sqrt (n), rotunjite. Testarea unui număr n prin verificarea tuturor numerelor între 2 și n-1 poate costa rapid o mulțime de timp. De exemplu, dacă vrem să verificăm dacă 103 este un număr prime cu această metodă, ar trebui să împărțim cu 3, 4, 5, 6, 7 ... etc, până la 102! Din fericire, nu este necesar să se testeze în acest fel. În practică, este necesar să se testeze doar cu factorii între 2 și rădăcina pătrată a lui n. Dacă rădăcina pătrată a lui n nu este un număr, rotunji la cel mai apropiat număr întreg și testați la acest număr. Consultați mai jos o explicație:
Să examinăm factorii de 100. = 100 1 x 100, 2 x 50 25 4 x 5 x 20, 10 x 10, 20 x 5, 4 x 25, 50 x 2 și 100 x 1. De notat că după 10 × 10, factorii sunt aceleași cum ar fi pentru 10 × 10, sa întors doar. În general, putem ignora factorii n mai mari de sqrt (n), deoarece sunt pur și simplu o continuare a factorilor mai mici decât sqrt (n).Să încercăm un exemplu. Dacă n = 37, nu trebuie să testați toate numerele de la 3 la 36, pentru a determina dacă n este un număr prime. În schimb, trebuie doar să vizualizăm numerele între 2 și sqrt (37) (rotunjite).sqrt (37) = 6.08 - o să rotunjim acest lucru până la 7.37 nu este pe deplin divizibil cu 3, 4, 5, 6 și 7 și astfel putem spune cu încredere că este una numărul primei este.5
Pentru a salva mai mult timp, folosim doar factori prim. Este posibil ca procesul de testare să fie împărțit chiar și mai scurt, fără a include acei factori care nu sunt primiți. Prin definiție, fiecare număr compus poate fi exprimat ca produs de două sau mai multe prime numere. Deci, împărțirea numărului n cu un număr compozit este superfluă - aceasta este echivalentă cu împărțirea de mai multe ori a primelor. Deci, putem îngusta lista de factori posibili doar la numere prime mai mici decât sqrt (n).
Acest lucru înseamnă că toți factorii, chiar și factorii multipli de numere prime, pot fi săriți.De exemplu, să încercăm să determinăm dacă 103 este un număr prime sau nu. Rădăcina pătrată de 103 este de 11 (rotunjită). Numerele prime între 2 și 11 sunt 3, 5, 7 și 11. 4, 6, 8 și 10 sunt perechi și 9 este un număr de 3, un număr prime, astfel încât să îl putem sărim. Prin aceasta am redus lista noastră de factori posibili la doar 4 numere!103 nu este pe deplin divizibil cu 3, 5, 7 sau 11, deci știm acum că 103 a numărul primei este.Metoda 2
Folosind teorema lui Fermat
În 1640, matematic francez Pierre de Fermat pentru prima dată un suport postulat (care acum îi poartă numele), care pot fi foarte utile pentru a stabili dacă un număr este sau nu este un număr prim. Punct de vedere tehnic, testul Fermat este proiectat pentru a verifica pentru un număr compus, în loc de un număr prim. Acest lucru se datorează testului cu "siguranța absolută" poate arăta că un număr este compus, dar numai unul "probabilitate" dacă un număr este un număr prime. Teorema mică a lui Fermat este utilă în situațiile în care încercarea de a diviza nu este practică și atunci când există o listă de numere care sunt excepții de la declarație.
1
Să presupunem asta n numărul este testat. Utilizați acest test pentru a determina dacă un număr dat n este un număr prime. Dar, așa cum am indicat deja mai sus, această declarație poate identifica ocazional anumite numere defecte compuse ca un număr prime. Este important să țineți cont de acest lucru și să verificați răspunsul dvs., ceea ce este explicat mai jos.
2
Alegeți un număr întreg o între 2 și n-1 (inclusiv). Integerul exact pe care îl alegeți nu este important. Deoarece parametrii pentru un a include 2 și n-1, le puteți utiliza, de asemenea.
Un exemplu: Este 100 un număr prime sau nu. Să presupunem că luăm 3 ca valoare de test - aceasta este între 2 și n-1, astfel încât să satisfacă.3
calcula on (mod n). Elaborarea acestei expresii necesită cunoașterea unui sistem matematic numit modulare matematice. În matematica modulară, cifrele revin la zero când ating o anumită valoare, numită și modul. Vă puteți gândi la asta ca la un ceas: în cele din urmă, mâna ceasului va trage înapoi la ora 1 după 12, nu până la ora 13. Modulul este notat ca (mod n). Deci, în acest pas, calculați an cu un modul de n.
O altă metodă este calculul an, și apoi împărțiți acest lucru cu n, după care folosiți restul ca răspuns. Calculatoarele specializate cu o funcție de modul pot fi foarte utile atunci când împart un număr mare, deoarece pot calcula imediat restul diviziunii.Dacă folosim un astfel de calculator în exemplul nostru, putem vedea că 3100/ 100 are un rest de 1. Deci, 3100 (mod 100) 1.4
Dacă calculăm acest lucru manual, atunci vom folosi exponentul ca notație scurtă. Dacă nu aveți un calculator cu funcție de modul, utilizați notația cu un exponent pentru a face procedura de determinare a odihnei mai ușoară. Vezi mai jos:
În exemplul nostru, calculam 3100 cu un modul de 100. 3100 este un număr foarte mare - 515,377,520,732,011,331,036,461,129,765,621,272,702,107,522.001 - atât de mare încât devine foarte dificil de a lucra cu el. În loc să utilizați răspunsul de 48 de cifre pentru 3100, îl putem remarca mai bine ca exponent, deci (((((((32) * 3)2)2)2) * 3)2)2. Amintiți-vă că luarea exponentului unui exponent dă efectul multiplicării exponenților (xY)z = xYZ).Acum putem determina restul. Începeți prin rezolvarea (((((((((32) * 3)2)2)2) * 3)2)2 la setul interior de paranteze și lucrați mai departe, unde împărțiți fiecare pas cu 100. Odată ce am găsit restul, îl folosim pentru pasul următor, în loc ca răspuns real. Vezi mai jos:((((((((9) * 3)2)2)2) * 3)2)2 - 9/100 nu are odihnă, așa că putem trece mai departe.((((((27)2)2)2) * 3)2)2 - 27/100 nu are odihnă, așa că putem trece mai departe.(((((729)2)2) * 3)2)2 - 729/100 = 7 R 29. Restul nostru este 29. Continuăm cu următorul pas și nu cu 729.((((292=841)2) * 3)2)2 - 841/100 = 8 R 41. Noi folosim restul nostru 41 din nou în etapa următoare.(((412 = 1681) * 3)2)2 - 1681/100 = 16 R 81. Folosim restul nostru 81 în pasul următor.((81 * 3 = 243)2)2 - 243/100 = 2 R 43. Folosim restul nostru 43 în pasul următor.(432 = 1849)2 - 1849/100 = 18 R 49. Folosim restul nostru 49 în pasul următor.492 = 2401 - 2401/100 = 24 R 1. restul nostru final este 1. Cu alte cuvinte, 3100 (mod 100) = 1. Rețineți că acesta este același răspuns ca și ceea ce am calculat în pasul anterior!5
Verificați dacă este sau nu on (mod n) = o (mod n). Dacă nu, atunci n este compusă. Dacă este adevărat, atunci n probabil, (dar nu sigur) un număr prime. Repetarea testului cu valori diferite pentru o poate face rezultatul mai sigur, dar există numere rare compuse care răspund teoremei lui Fermat pentru toate valorile a. Acestea se numesc numerele Carmichael - cel mai mic dintre aceste numere este 561.
În exemplul nostru, 3100 (mod 100) = 1 și 3 (mod 100) = 3. 1 ≠ 3, deci putem spune că 100 este un număr compozit.6
Utilizați numerele Carmichael pentru a vă asigura rezultatul. Știind ce numere corespund secvenței Carmichael înainte de a trece mai departe, vă puteți îngrijora foarte mult dacă un număr este sau nu un număr prime. În general, numerele Carmichael sunt produsul numerelor prime separate, cu toate primii fiind p atunci când p este un divizor al n, că p-1 este, de asemenea, un divizor al lui n-1. Lista online a numerelor Carmichael poate fi foarte utilă pentru a determina, cu ajutorul teoremei mici a lui Fermat, dacă un număr este un număr prime.
Metoda 3
Folosind testul Miller-Rabin
Testul Miller-Rabin funcționează în același mod ca și teorema lui Fermat, dar merge într-un mod mai bun cu numerele de abatere, cum ar fi numerele Carmichael.
1
set n este un număr ciudat pe care vrem să-l testăm pe primalitate. Ca și în metodele menționate mai sus, n este variabila pe care vrem să o determinăm primalitatea.
2
presiune n-1 oprit în formularul 2s × d prin care d este ciudat. Numărul n este un număr prime dacă este ciudat. Deci n - 1 trebuie să fie echilibrat. Deoarece n - 1 este egal, poate fi scris ca o putere de 2 ori un număr impar. Deci, 4 = 22 × 1-80 = 24 × 5 și așa mai departe.
Să presupunem că vrem să determinăm dacă n = 321 este un număr prime. 321 - 1 = 320, pe care îl putem exprima ca 26 × 5.În acest caz, n = 321 este un număr adecvat. Determinarea n-1 pentru n = 371 poate necesita o valoare mare pentru d, făcând întregul proces mai dificil într-o etapă ulterioară. 371 - 1 = 370 = 21 × 1853
Alegeți un număr aleatoriu o între 2 și n-1. Numărul exact pe care îl alegeți este irelevant - doar că trebuie să fie mai mic decât n și mai mare decât 1.
În exemplul nostru cu n = 321, alegem a = 100.4
calcula od (mod n). ca od = 1 sau -1 (mod n), apoi treceți n testul Miller-Rabin și este probabil un număr prime. Ca și în teorema Small Ferm, acest test nu poate determina primalitatea unui număr cu certitudine absolută, însă necesită teste suplimentare.
În exemplul nostru cu n = 321, ad (mod n) = 1005 (mod 321). 1005 = 10.000.000.000 (mod 321) = 313. Utilizăm un calculator special sau metoda scurtă cu un exponent așa cum este descris mai devreme, pentru a găsi restul de 1005/ 321.Deoarece nu am obținut 1 sau -1, nu putem spune cu certitudine că n este un număr prime. Dar mai sunt multe de făcut - citiți mai departe.5
Deoarece rezultatul nu este egal cu 1 sau -1, calculează o2d, o4d, ... și așa mai departe, până la o2s-1d. Calculați a la puterea de d ori, până la 2s-1. Dacă unul dintre acestea este egal cu 1 sau -1 (mod n), apoi treceți n testul Miller-Rabin și este probabil un prim. Dacă ați stabilit că n satisface testul, verificați răspunsul (vezi pasul de mai jos). Dacă n nu îndeplinește unul dintre aceste teste, atunci este unul compozit număr.
Ca o reamintire, în exemplul nostru, valoarea lui a este egală cu 100, valoarea lui s este 6 și a d 5. Continuăm testarea după cum se arată mai jos:1002d = 10 = 1 × 1020.1 × 1020 (mod 321) = 64. 64 ≠ " 1 sau -1. Continuă să mergi liniștit.1004d = 20 = 1 × 1040.1 × 1040 (mod 321) = 244. 244 ≠ 1 sau -1.Ne putem opri în acest moment. s - 1 = 6 - 1 = 5. Acum avem 4d = 22 realizat, și nu există puteri de 2 ori d sub 5d. Deoarece nici unul dintre calculele noastre nu a dat un răspuns 1 sau -1, putem spune că n = 321 a compozit este numărul.6
ca n îndeplinește testul Miller-Rabin, repetați acest lucru pentru celelalte valori ale lui o. Dacă ați descoperit că valoarea lui n poate fi un număr prime, încercați din nou cu o altă valoare aleatorie pentru a pentru a confirma rezultatul testului. În cazul în care n este de fapt un număr prim, se va bate pentru orice valoare a. În cazul în care n este un număr compozit, atunci eșecul va fi pentru trei sferturi din valoarea unui. Acest lucru vă oferă mai multă siguranță decât lui Fermat Mica teorema, care anumite numere compuse (numerele Carmichael) trec testul pentru fiecare valoare a.
Metoda 4
Folosind restul chinezesc
1
Alegeți două numere. Unul dintre numere nu este un număr prime și al doilea este numărul care este testat pentru primalitate.
- "Numărul testului1" = 35
- Numărul de încercare2 = 97
2
Alegeți două puncte de date mai mari decât zero și mai mici decât Test number1 și Test number2, respectiv. Nu pot fi egali unul cu altul.
Datele1 = 1Date2 = 23
Calculați MMI (inversarea matematică multiplicativă) pentru numărul de încercare1 și numărul de încercare2
Calculați MMIMMI1 = Numărul de încercare2 ^ -1 Numărul de test Mod1MMI2 = Numărul de încercare1 ^ -1 Numărul de test Mod2Numai pentru numerele prime (va exista o soluție pentru numerele care nu sunt prime, dar aceasta nu este MMI):MMI1 = (Număr de încercare2 ^ (Numărul testului1-2))% Numărul de testare1MMI2 = (Numărul de încercare1 ^ (Numărul de încercare-2))% Număr de încercare2asa:MMI1 = (97 ^ 33)% 35MMI2 = (35 ^ 95)% 974
Creați o masă binară pentru fiecare MMI până la Log2 a modulului
Pentru MMI1F (1) = Numărul testului2% Numărul testului1 = 97% 35 = 27F (2) = F (1) * F (1)% Numărul de testare1 = 27 * 27% 35 = 29F (4) = F (2) * F (2)% Numărul de testare1 = 29 * 29% 35 = 1F (8) = F (4) * F (4)% Numărul de testare1 = 1 * 1% 35 = 1F (16) = F (8) * F (8)% Numărul testului1 = 1 * 1% 35 = 1F (32) = F (16) * F (16)% Numărul testului1 = 1 * 1% 35 = 1Calculați logaritmul binar al numărului de testare1 - 235 -2 = 33 (10001) baza 2MMI1 = F (33) = F (32) * F (1) mod 35MMI1 = F (33) = 1 * 27 Mod 35MMI1 = 27Pentru MMI2F (1) = Numărul testului1% Numărul testului2 = 35% 97 = 35F (2) = F (1) * F (1)% Numărul testului 2 = 35 * 35 mod 97 = 61F (4) = F (2) * F (2)% Numărul testului2 = 61 * 61 mod 97 = 35F (8) = F (4) * F (4)% Numărul testului2 = 35 * 35 mod 97 = 61F (16) = F (8) * F (8)% Numărul testului2 = 61 * 61 mod 97 = 35F (32) = F (16) * F (16)% Numărul testului 2 = 35 * 35 mod 97 = 61F (64) = F (32) * F (32)% Numărul testului2 = 61 * 61 mod 97 = 35F (128) = F (64) * F (64)% Numărul testului2 = 35 * 35 mod 97 = 61Calculați logaritmul binar al Test number2 - 297 - 2 = 95 = (1011111) baza 2MMI2 = (((((F (64) * F (16)% 97) * F (8)% 97) * F (4)% 97) * F (2)% 97) )MMI2 = ((((35 * 35)% 97) * 61)% 97) * 35% 97) * 61% 97) * 35% 97)MMI2 = 615
Calculați (Date1 * Numărul de încercare2 * MMI1 + Date2 * Numărul de încercare1 * MMI2)% (Număr de încercare1 * Număr de încercare)
Răspunsul = (1 * 97 * 27 + 2 * 35 * 61)% (97 * 35)Răspuns = (2619 + 4270)% 3395Răspuns = 996
Verificați dacă "Numărul testului1" nu este un număr prime
Calculați (Răspuns - Date1)% Test number199 -1% 35 = 28Deoarece 28 este mai mare decât 0, 35 nu este un număr prime7
Verificați dacă numărul de testare2 este un număr prime
Calculați (răspuns - date2)% Test number299 - 2% 97 = 0Deoarece 0 este 0, 97 este un număr primitiv potențial8
Repetați pașii de la 1 la 7 cel puțin de două ori mai mult.
Dacă pasul 7 este egal cu 0:Utilizați altul "Numărul testului1" dacă Test Number1 nu este un număr prime.Utilizați un alt număr de test1 unde un număr de testare1 este de fapt un număr prime. În acest caz, etapele 6 și 7 sunt egale cu 0.Folosiți diferite puncte de date pentru datele1 și data2.Dacă pasul 7 este întotdeauna egal cu 0, probabilitatea ca numărul2 să fie un număr prime este foarte mare.Etapele 1 până la 7 sunt cunoscute a fi inexacte în anumite cazuri când primul număr nu este un număr prime și cel de-al doilea este un factor prim al numărului non-prime "Numărul testului1". Funcționează în toate scenariile de care ambele numere sunt prime.Motivul pentru pașii de la 1 la 7 sunt repetate, pentru că există câteva scenarii în care, chiar dacă Testgetal1 nu este prim și Testgetal2 nu prim, fie numere de la pasul 7 este încă la zero. Aceste condiții sunt rare. Prin schimbarea numărului de testare1 la un alt număr non-prime, dacă numărul de încercare2 nu este un număr prime, numărul de încercare2 nu va mai fi zero, la pasul 7. Cu excepția cazului în care "Numărul testului1" este un factor al Test number2, primes va fi întotdeauna zero în pasul 7.sfaturi
- Cele 168 de numere prime mai puțin de 1000 sunt: 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
- Atunci când încercați să împărțiți este mai lent decât metodele mai sofisticate, acesta este încă eficient pentru numere mai mici. Chiar și atunci când testați numere mai mari, nu este neobișnuit să verificați mai întâi numerele mici înainte de a trece la metodele mai avansate.
accesorii
- Hârtie, stilou, creion și / sau un calculator pentru prelucrarea
Distribuiți pe rețelele sociale:
înrudit