Sjekk om et tall er prime

Forfatter: John Pratt
Opprettelsesdato: 9 Februar 2021
Oppdater Dato: 28 Juni 2024
Anonim
Why the tallest tower on earth collapsed | The Warsaw Radio Mast [Kult America]
Video: Why the tallest tower on earth collapsed | The Warsaw Radio Mast [Kult America]

Innhold

Primtall er tall som bare kan deles av seg selv og kalles 1 - andre tall forbindelse tall. Når det gjelder å teste om et tall er prime, er det flere alternativer. Noen av disse metodene er relativt enkle, men ikke i det hele tatt praktiske for større tall. Andre tester som ofte brukes, er faktisk komplette algoritmer basert på en sannsynlighet som noen ganger feilaktig betrakter et tall som primtall. Les videre til trinn 1 for å lære deg å teste deg selv om du har å gjøre med et primtall.

Å trå

Metode 1 av 4: Prøv å dele

Å prøve å dele er den klart enkleste måten å teste et tall på. For små tall er det vanligvis også den raskeste måten. Testen er basert på definisjonen av et primtall: et tall er prime hvis det bare er delbart av seg selv og 1.

  1. Anta n er tallet du vil teste. Del tallet n på alle mulige delbare heltall. For større tall som n = 101, er det enormt upraktisk å dele med et mulig heltall mindre enn n. Heldigvis er det flere triks for å redusere antall faktorer som skal testes.
  2. Bestem om n til og med. Alle partall er helt delelige med 2. Derfor, hvis n er jevn, kan du si det n er et sammensatt tall (og derfor ikke et primtal). For å raskt finne ut om et tall er jevnt, trenger du bare å ta hensyn til det siste sifferet. Hvis det siste sifferet er 2, 4, 6, 8 eller 0, er tallet jevnt og ikke prim.
    • Det eneste unntaket fra denne regelen er selve tallet 2, som fordi det er delbart av seg selv og 1, også er det viktigste. 2 er den eneste jevne prime.
  3. Del n med et hvilket som helst tall mellom 2 og n-1. Fordi et primtall ikke har noen andre faktorer enn seg selv og 1, og fordi heltallfaktorer er mindre enn deres produkt, vil det å sjekke delbarheten til et heltall mindre enn n og større enn 2 avgjøre om n er primær. Vi begynner etter 2 fordi partall (multipler av 2) ikke kan være primtall. Dette er langt fra en effektiv måte å teste på, som du vil se nedenfor.
    • For eksempel, hvis vi ønsket å bruke denne metoden for å teste om 11 er primtall eller ikke, vil vi dele 11 med 3, 4, 5, 6, 7, 8, 9 og 10, og lete etter et heltalsvar uten resten. Siden ingen av disse tallene passer helt inn i 11, kan vi si at 11 er ett er prime.
  4. For å spare tid, test bare opp til sqrt (n), rundet opp. Å teste et tall n ved å sjekke alle tallene mellom 2 og n-1 kan fort ta mye tid. For eksempel, hvis vi ønsket å sjekke om 103 er prime med denne metoden, måtte vi dele med 3, 4, 5, 6, 7 ... etc, helt til 102! Heldigvis er det ikke nødvendig å teste slik. I praksis er det bare nødvendig å teste for faktorene mellom 2 og kvadratroten til n. Hvis kvadratroten til n ikke er et tall, runder du det til nærmeste heltall og tester til dette tallet. Se nedenfor for en forklaring:
    • La oss undersøke faktorene på 100. 100 = 1 × 100, 2 × 50, 4 × 25, 5 × 20, 10 × 10, 20 × 5, 25 × 4, 50 × 2 og 100 × 1. Merk at etter 10 × 10 er faktorene de samme hvis det for 10 × 10, bare snudd. Generelt kan vi ignorere faktorene til n større enn sqrt (n), da de ganske enkelt er en fortsettelse av faktorer mindre enn sqrt (n).
    • La oss prøve et eksempel. Hvis n = 37, trenger vi ikke å teste alle tallene fra 3 til 36 for å avgjøre om n er prim. I stedet trenger vi bare se på tallene mellom 2 og sqrt (37) (avrundet opp).
      • sqrt (37) = 6.08 - vi skal runde dette opp til 7.
      • 37 er ikke fullstendig delelig med 3, 4, 5, 6 og 7, og så kan vi trygt si at det er en primtall er.
  5. For å spare enda mer tid bruker vi bare hovedfaktorer. Det er mulig å gjøre prosessen med testing ved å dele enda kortere ved å ikke inkludere de faktorene som ikke er primtall. Per definisjon kan hvert sammensatte tall uttrykkes som produktet av to eller flere primtall. Så å dele tallet n med et sammensatt tall er unødvendig - dette tilsvarer å dele med primtall flere ganger. Så vi kan ytterligere begrense listen over mulige faktorer til bare primtall mindre enn sqrt (n).
    • Dette betyr at alle jevne faktorer, så vel som faktorene som er multipler av primtall, kan hoppes over.
    • La oss for eksempel prøve å avgjøre om 103 er prime eller ikke. Kvadratroten på 103 er 11 (avrundet opp). Primtallene mellom 2 og 11 er 3, 5, 7 og 11. 4, 6, 8 og 10 er jevne og 9 er et multiplum av 3, et primtall, så vi kan hoppe over det. Ved å gjøre dette har vi redusert listen vår over mulige faktorer til bare 4 tall!
      • 103 er ikke helt delelig med verken 3, 5, 7 eller 11, så vi vet nå at 103 er en primtall er.

Metode 2 av 4: Bruke Fermats lille teorem

I 1640 foreslo den franske matematikeren Pierre de Fermat først en setning (nå oppkalt etter ham) som kan være svært nyttig for å avgjøre om et tall er primtall eller ikke. Teknisk er Fermats test ment å verifisere at et tall er sammensatt, i stedet for primtall. Dette er fordi testen med "absolutt sikkerhet" kan vise at et tall er sammensatt, men bare en "sannsynlighet" for at et tall er primtall. Fermats lille setning er nyttig i situasjoner der det er upraktisk å prøve å dele seg, og når det er en liste over tall tilgjengelig som er unntak fra setningen.


  1. Anta n tallet er for testing. Du bruker denne testen for å bestemme om et gitt tall n er prim. Imidlertid, som nevnt ovenfor, kan denne teorem av og til feilaktig karakterisere noen forbindelser som prime. Det er viktig å ta hensyn til dette og sjekke svaret ditt, som forklares nedenfor.
  2. Velg et heltall en mellom 2 og n-1 (inkludert). Det nøyaktige hele tallet du velger er ikke viktig. Siden parameterne for a inkluderer 2 og n-1, kan du også bruke dem.
    • Et eksempel: Er 100 prime eller ikke. Anta at vi tar 3 som en testverdi - dette er mellom 2 og n-1, så det er tilstrekkelig.
  3. regne ut en (mod n). Å trene dette uttrykket krever litt kunnskap om et matematisk system som kalles modulær matematikk. I modulær matematikk går tallene tilbake til null når de når en viss verdi, også kjent som modulus. Du kan tenke på dette som en klokke: til slutt vil klokkens hånd gå tilbake til klokka 13 etter klokka 12, ikke til klokken 13. Modulen er notert som (mod n). Så i dette trinnet beregner du a med en modul på n.
    • En annen metode er å beregne a, deretter dele den med n, og deretter bruke resten som svar. Spesialiserte kalkulatorer med modulfunksjon kan være veldig nyttige når man deler store tall, fordi de umiddelbart kan beregne resten av en divisjon.
    • Ved å bruke en slik kalkulator i vårt eksempel kan vi se at 3/100 har en rest på 1. Så, 3 (mod 100) er 1.
  4. Hvis vi beregner dette for hånd, bruker vi eksponenten som et kort format. Hvis du ikke har en kalkulator med en modulfunksjon, kan du bruke notasjonen med en eksponent for å gjøre prosedyren for å bestemme resten lettere. Se nedenfor:
    • I vårt eksempel beregner vi 3 med en modul på 100. 3 er et veldig, veldig stort tall - 515,377,520,732,011,331,036,461,129,765,621,272,702,107,522,001 - så stort at det blir veldig vanskelig å jobbe med. I stedet for å bruke det 48-sifrede svaret på 3, bør vi skrive det som en eksponent (((((((3)*3))))*3)). Husk at å ta eksponenten til en eksponent har den effekten at du multipliserer eksponentene ((x) = x).
      • Nå kan vi bestemme resten. Start med å løse ((((((3) * 3))) * 3)) ved det indre settet med parenteser og arbeid deg ut, del hvert trinn med 100. Når vi har funnet resten, bruker vi det til neste trinn i stedet for det faktiske svaret. Se nedenfor:
        • ((((((9) * 3))) * 3)) - 9/100 har ingen rest, så vi kan fortsette.
        • (((((27)))) * * 3)) - 27/100 har ingen rest, så vi kan gå videre.
        • ((((729))) * 3)) - 729/100 = 7 R 29. Resten vår er 29. Vi fortsetter med neste trinn, ikke 729.
        • ((((29=841)) * * 3)) - 841/100 = 8 R 41. Vi bruker resten 41 igjen i neste trinn.
        • (((41 = 1681) * 3)) - 1681/100 = 16 R 81. Vi bruker resten 81 i neste trinn.
        • ((81*3 = 243)) - 243/100 = 2 R 43. Vi bruker resten 43 i neste trinn.
        • (43 = 1849) - 1849/100 = 18 R 49. Vi bruker resten 49 i neste trinn.
        • 49 = 2401 - 2401/100 = 24 R 1. vår siste rest er 1. Med andre ord 3 (mod 100) = 1. Merk at dette er det samme svaret som vi beregnet i forrige trinn!
  5. Finn ut om en (mod n) = en (mod n). Hvis ikke, er n sammensatt. Hvis det er sant, så er n sannsynligvis, (men ikke sikker) et primtall. Gjenta testen med forskjellige verdier for a kan gjøre resultatet mer sikkert, men det er sjeldne sammensatte tall som tilfredsstiller Fermats teorem for alle verdier av a. Disse kalles Carmichael-tallene - det minste av disse tallene er 561.
    • I vårt eksempel er 3 (mod 100) = 1 og 3 (mod 100) = 3.1 ≠ 3, så vi kan si at 100 er et sammensatt tall.
  6. Bruk Carmichael-tallene for å være sikker på resultatet ditt. Å vite hvilke tall som møter Carmichael-serien før du fortsetter, kan spare deg for mye bekymring for om et tall er primtall eller ikke. Generelt er Carmichael-tallene produktet av individuelle primtall, hvor det for alle primtall holder at hvis p er en skillelinje av n, så er også p-1 en skillelinje av n-1. Den elektroniske listen over Carmichael-tall kan være veldig nyttig for å bestemme om et tall er primtall, ved hjelp av Fermats Small Theorem.

Metode 3 av 4: Bruke Miller-Rabin-testen

Miller-Rabin-testen fungerer på samme måte som Fermats lille teorem, men handler bedre med ikke-standardiserte tall som Carmichael-tall.


  1. Anta n er et oddetall som vi vil teste for primalitet. Som i metodene som er angitt ovenfor, er n variabelen som vi ønsker å bestemme primaliteten for.
  2. Press n-1 i form 2 × d ved hvilken d er rart. Tallet n er primært hvis det er rart. Så n - 1 må være jevn. Siden n - 1 er jevn, kan den skrives som en styrke på 2 ganger et oddetall. Så, 4 = 2 × 1; 80 = 2 × 5; og så videre.
    • Anta at vi vil bestemme om n = 321 er prim. 321 - 1 = 320, som vi kan uttrykke som 2 × 5.
      • I dette tilfellet er n = 321 et passende tall. Å bestemme n - 1 for n = 371 kan kreve en stor verdi for d, noe som gjør hele prosessen vanskeligere på et senere tidspunkt. 371 - 1 = 370 = 2 × 185
  3. Velg et hvilket som helst nummer en mellom 2 og n-1. Det nøyaktige antallet du velger spiller ingen rolle - bare at det må være mindre enn n og større enn 1.
    • I vårt eksempel med n = 321 velger vi a = 100.
  4. regne ut en (mod n). Hvis en = 1 eller -1 (mod n), så passerer n Miller-Rabin-testen og er sannsynligvis et primtall. Som med Fermats Small Theorem, kan denne testen ikke bestemme et talls primality med absolutt sikkerhet, men krever ytterligere tester.
    • I vårt eksempel med n = 321, er a (mod n) = 100 (mod 321). 100 = 10.000.000.000 (mod 321) = 313. Vi bruker en spesiell kalkulator, eller forkortelsesmetoden med en eksponent som beskrevet tidligere, for å finne resten av 100/321.
      • Siden vi ikke har fått 1 eller -1, kan vi ikke si med sikkerhet at n er prim. Men det er fortsatt mer vi trenger å gjøre - les videre.
  5. Siden resultatet ikke er lik 1 eller -1, beregner du en, en, ... og så videre, opp til end. Beregn en hevet til kraften av d ganger, opp til 2. Hvis en av disse er lik 1 eller -1 (mod n), og deretter passerer n Miller-Rabin tester og er sannsynligvis førsteklasses. Hvis du har bestemt at n består testen, så sjekk svaret ditt (se trinnet nedenfor). Hvis n mislykkes i noen av disse testene, er det en komponert Nummer.
    • Som en påminnelse, i vårt eksempel er verdien av a 100, verdien av s er 6 og d er 5. Vi fortsetter å teste som vist nedenfor:
      • 100 = 1 × 10.
        • 1 × 10 (mod 321) = 64,64 ≠’ 1 eller -1. Fortsett rolig.
      • 100 = 1 × 10.
        • 1 × 10 (mod 321) = 244,244 1 eller -1.
      • På dette punktet kan vi stoppe. s - 1 = 6 - 1 = 5. Vi har nå nådd 4d = 2, og det er ingen krefter 2 ganger d under 5d. Siden ingen av beregningene våre svarte på 1 eller -1, kan vi si at n = 321 en komponert nummer er.
  6. Hvis n består Miller-Rabin-testen, gjenta for de andre verdiene av en. Hvis du har funnet ut at verdien til n kan være primær, kan du prøve igjen med en annen, tilfeldig verdi for a for å bekrefte resultatet av testen. Hvis n faktisk er prim, vil det være sant for en hvilken som helst verdi av a. Hvis n er et sammensatt tall, vil det mislykkes i tre fjerdedeler av verdiene til a. Dette gir deg mer sikkerhet enn Fermats Small Theorem, hvor visse sammensatte tall (Carmichael-tallene) består testen for hvilken som helst verdi av a.

Metode 4 av 4: Bruke den kinesiske restsatsen

  1. Velg to tall. Ett av tallene er ikke primtall, og det andre er tallet som blir testet for primalitet.
    • "Testnummer1" = 35
    • Test nummer2 = 97
  2. Velg to datapunkter som er større enn henholdsvis null og mindre enn TestNummer1 og TestNumber2. De kan ikke være like hverandre.
    • Data1 = 1
    • Data2 = 2
  3. Beregn MMI (matematisk multiplikativ invers) for testnummer1 og testnummer2
    • Beregn MMI
      • MMI1 = testnummer2 ^ -1 mod testnummer1
      • MMI2 = testnummer1 ^ -1 mod testnummer2
    • Bare for primtall (det vil være et resultat for ikke-primtall, men det er ikke MMI):
      • MMI1 = (TestNumber2 ^ (TestNumber1-2))% TestNumber1
      • MMI2 = (TestNumber1 ^ (TestNumber-2))% TestNumber2
    • Så:
      • MMI1 = (97 ^ 33)% 35
      • MMI2 = (35 ^ 95)% 97
  4. Lag en binær tabell for hver MMI opp til Log2 i Modulus
    • For MMI1
      • F (1) = testnummer2% testnummer1 = 97% 35 = 27
      • F (2) = F (1) * F (1)% Testnummer1 = 27 * 27% 35 = 29
      • F (4) = F (2) * F (2)% Testnummer1 = 29 * 29% 35 = 1
      • F (8) = F (4) * F (4)% Testnummer1 = 1 * 1% 35 = 1
      • F (16) = F (8) * F (8)% Testnummer1 = 1 * 1% 35 = 1
      • F (32) = F (16) * F (16)% Testnummer1 = 1 * 1% 35 = 1
    • Beregn den binære logaritmen til TestNumber1 - 2
      • 35 -2 = 33 (10001) base 2
      • MMI1 = F (33) = F (32) * F (1) mod 35
      • MMI1 = F (33) = 1 * 27 Mod 35
      • MMI1 = 27
    • For MMI2
      • F (1) = testnummer 1% testnummer2 = 35% 97 = 35
      • F (2) = F (1) * F (1)% Testnummer2 = 35 * 35 mod 97 = 61
      • F (4) = F (2) * F (2)% Testnummer2 = 61 * 61 mod 97 = 35
      • F (8) = F (4) * F (4)% Testnummer2 = 35 * 35 mod 97 = 61
      • F (16) = F (8) * F (8)% Testnummer2 = 61 * 61 mod 97 = 35
      • F (32) = F (16) * F (16)% Testnummer2 = 35 * 35 mod 97 = 61
      • F (64) = F (32) * F (32)% Testnummer2 = 61 * 61 mod 97 = 35
      • F (128) = F (64) * F (64)% Testnummer2 = 35 * 35 mod 97 = 61
    • Beregn den binære logaritmen til TestNumber2 - 2
      • 97 - 2 = 95 = (1011111) base 2
      • MMI2 = ((((((F (64) * F (16)% 97) * F (8)% 97) * F (4)% 97) * F (2)% 97) * F (1)% 97)
      • MMI2 = ((((((35 * 35)% 97) * 61)% 97) * 35% 97) * 61% 97) * 35% 97)
      • MMI2 = 61
  5. Beregn (Data1 * TestNumber2 * MMI1 + Data2 * TestNumber1 * MMI2)% (TestNumber1 * TestNumber)
    • Svar = (1 * 97 * 27 + 2 * 35 * 61)% (97 * 35)
    • Svar = (2619 + 4270)% 3395
    • Svar = 99
  6. Sjekk at "TestNumber1" ikke er prime1
    • Beregn (svar - data1)% testnummer1
    • 99 -1 % 35 = 28
    • Siden 28 er større enn 0, er 35 ikke prime
  7. Sjekk om TestNumber2 er prime
    • Beregn (svar - data2)% testnummer2
    • 99 - 2 % 97 = 0
    • Siden 0 er lik 0, er 97 et potensielt primtall
  8. Gjenta trinn 1 til 7 minst to ganger til.
    • Hvis trinn 7 er lik 0:
      • Bruk en annen "TestNumber1" hvis TestNumber1 ikke er prime.
      • Bruk en annen TestNumber1 der en TestNumber1 faktisk er prime. I dette tilfellet er trinn 6 og 7 lik 0.
      • Bruk forskjellige datapunkter for data1 og data2.
    • Hvis trinn 7 alltid er lik 0, er sannsynligheten for at tallet 2 er et primtall veldig høyt.
    • Trinn 1 til 7 er kjent for å være feil i visse tilfeller når det første tallet ikke er primtall og det andre er en primærfaktor for det ikke-primtallet "Testnummer1". Det fungerer i alle scenarier der begge tallene er prime.
    • Årsaken til at trinn 1 til 7 gjentas, er fordi det er noen få scenarier der, selv om TestNumber1 ikke er prime og TestNumber2 ikke er prime, er begge tallene fra trinn 7 fortsatt null. Disse forholdene er sjeldne. Ved å endre TestNumber1 til et annet ikke-primtall, hvis TestNumber2 ikke er prime, vil TestNumber2 ikke lenger være lik null, i trinn 7. Med unntak av tilfellet der "TestNumber1" er en faktor av TestNumber2, vil primtalene alltid være null. Er i trinn 7.

Tips

  • De 168 primtallene 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
  • Når du prøver å dele er tregere enn de mer sofistikerte metodene, er det fortsatt effektivt for mindre tall. Selv når du tester større tall, er det ikke uvanlig å sjekke de små tallene først før du bytter til de mer avanserte metodene.

Nødvendigheter

  • Papir, penn, blyant og / eller kalkulator for trening