I numeri primi sono numeri che sono divisibili solo per se stessi e sono chiamati 1 – altri numeri composto numeri. Quando si tratta di verificare se un numero è primo, ci sono diverse opzioni. Alcuni di questi metodi sono relativamente semplici ma sicuramente non pratici per numeri più grandi. Altri test che vengono spesso utilizzati sono in realtà algoritmi completi basati su a probabilità che a volte classificano erroneamente un numero come primo. Continua a leggere il passaggio 1 per imparare a metterti alla prova se hai a che fare con un numero primo.
Passi
Metodo 1 di 4: prova dividendo
Provare dividendo è di gran lunga il modo più semplice per testare un numero. Per piccoli numeri di solito è anche il modo più veloce. Il test si basa sulla definizione di numero primo: un numero è primo se è divisibile solo per se stesso e 1.
1. Coppia n è il numero che vuoi testare. Dividi il numero n per tutti i possibili interi divisibili. Per numeri più grandi come n=101, è estremamente impraticabile dividere per ogni possibile intero minore di n. Fortunatamente, ci sono diversi trucchi per ridurre il numero di fattori da testare.
2. Determinare se n anche è. Tutti i numeri pari sono completamente divisibili per 2. Pertanto, se n è pari, puoi dirlo n è un numero composto (e quindi non un numero primo). Per determinare rapidamente se un numero è pari, devi solo prestare attenzione all`ultima cifra. Se l`ultima cifra è 2, 4, 6, 8 o 0, allora il numero è pari e non primo.
L`unica eccezione a questa regola è lo stesso numero 2, che, essendo divisibile per se stesso e per 1, è anche primo. 2 è l`unico numero primo pari.3. Parte n da qualsiasi numero compreso tra 2 e n-1. Poiché un numero primo non ha fattori diversi da se stesso e 1 e poiché i fattori degli interi sono minori del loro prodotto, la verifica della divisibilità di un intero minore di n e maggiore di 2 determinerà se n è primo. Iniziamo dopo 2 perché i numeri pari (multipli di 2) non possono essere primi. Questo è tutt`altro che un modo efficiente per testare, come vedrai di seguito.
Ad esempio, se volessimo utilizzare questo metodo per verificare se 11 è primo o meno, dovremmo dividere 11 per 3, 4, 5, 6, 7, 8, 9 e 10, cercando ogni volta una risposta intera senza resto. Poiché nessuno di questi numeri rientra completamente in 11, possiamo dire che 11 è a primo è.4. Per risparmiare tempo prova solo fino a sqrt(n), arrotondato. Testare un numero n controllando tutti i numeri compresi tra 2 e n-1 può rapidamente richiedere molto tempo. Ad esempio, se volessimo verificare se 103 è primo usando questo metodo, dovremmo dividere per 3, 4, 5, 6, 7 ... eccetera., fino a 102! Fortunatamente non è necessario testare in questo modo. In pratica basta solo verificare con i fattori compresi tra 2 e la radice quadrata di n. Se la radice quadrata di n non è un numero, arrotondalo all`intero più vicino e verifica a questo numero. Vedi sotto per una spiegazione:
Esaminiamo i fattori di 100. 100 = 1 × 100, 2 × 50, 4 × 25, 5 × 20, 10 × 10, 20 × 5, 25 × 4, 50 × 2 e 100 × 1. Si noti che dopo 10 × 10, i fattori sono gli stessi di 10 × 10, solo invertiti. In generale, possiamo ignorare i fattori di n maggiori di sqrt(n) perché sono semplicemente una continuazione di fattori minori di sqrt(n).Proviamo un esempio. Se n = 37, non è necessario testare tutti i numeri da 3 a 36 per determinare se n è primo. Invece, dobbiamo solo guardare i numeri compresi tra 2 e sqrt(37) (arrotondati per eccesso).sqrt(37) = 6.08 – lo arrotonderemo per eccesso a 7.37 non è completamente divisibile per 3, 4, 5, 6 e 7 e quindi possiamo affermare con sicurezza che si tratta di un numero primo è.5. Per risparmiare ancora più tempo, utilizziamo solo fattori primi. È possibile rendere il processo di test per divisione ancora più breve non includendo quei fattori che non sono primi. Per definizione, qualsiasi numero composto può essere espresso come prodotto di due o più numeri primi. Quindi non è necessario dividere il numero n per un numero composto: ciò equivale a dividere più volte per numeri primi. Quindi, possiamo restringere ulteriormente l`elenco dei possibili fattori solo ai numeri primi inferiori a sqrt(n).
Ciò significa che tutti i fattori pari, così come quelli che sono multipli di numeri primi, possono essere saltati.Ad esempio, proviamo a determinare se 103 è primo o meno. La radice quadrata di 103 è 11 (arrotondata per eccesso). I numeri primi compresi tra 2 e 11 sono 3, 5, 7 e 11. 4, 6, 8 e 10 sono pari e 9 è un multiplo di 3, un numero primo, quindi possiamo saltare questo. In questo modo abbiamo ridotto il nostro elenco di possibili fattori a soli 4 numeri!103 non è completamente divisibile per 3, 5, 7 o 11, quindi ora sappiamo che 103 è un numero primo è.Metodo 2 di 4: Utilizzo del piccolo teorema di Fermat
Nel 1640, il matematico francese Pierre de Fermat posò per primo un teorema (che ora porta il suo nome) che può essere molto utile per determinare se un numero è primo o meno. Tecnicamente, il test di Fermat ha lo scopo di verificare se un numero è composto, piuttosto che primo. Questo perché il test con "certezza assoluta" può mostrare che un numero è composto, ma solo a "probabilità" se un numero è primo. Il piccolo teorema di Fermat è utile in situazioni in cui provare a dividere per non è pratico e quando è disponibile un elenco di numeri che sono eccezioni al teorema.
1. Supponiamo n il numero è per il test. Si usa questo test per determinare se un dato numero n è primo. Ma come accennato in precedenza, questo teorema può occasionalmente caratterizzare erroneamente alcuni composti come numeri primi. È importante tenerne conto e controllare la tua risposta, che sarà spiegata in seguito.
2. Scegli un numero intero un tra 2 e n-1 (compreso). L`intero esatto che scegli non è importante. Poiché i parametri per a sono comprensivi di 2 e n-1, puoi anche usarli.
Un esempio: 100 è un numero primo o no?. Supponiamo di prendere 3 come valore di prova - questo è compreso tra 2 e n-1, quindi è sufficiente.3. calcolare un (mod n). L`elaborazione di questa espressione richiede una certa conoscenza di un sistema matematico chiamato matematica modulare. Nella matematica modulare, i numeri tornano a zero al raggiungimento di un certo valore, noto come il modulo. Puoi pensarlo come un orologio: alla fine la lancetta dell`orologio tornerà all`una dopo le 12, non all`una. Il modulo è annotato come (mod n). Quindi a questo punto calcoli con un modulo di n.
Un altro metodo è calcolare a, quindi dividere per n, quindi utilizzare il resto come risposta. Calcolatrici specializzate con funzione modulo possono essere molto utili quando si dividono grandi numeri, perché possono calcolare direttamente il resto di una divisione.Usando una tale calcolatrice nel nostro esempio, possiamo vedere che 3/100 ha un resto di 1. Quindi, 3 (mod 100) lo è 1.4. Se lo calcoliamo a mano, usiamo l`esponente come notazione breve. Se non hai una calcolatrice con funzione modulo, usa la notazione esponenziale per rendere più semplice la procedura di determinazione del resto. Vedi sotto:
Nel nostro esempio calcoliamo 3 con un modulo di 100. 3 è un numero molto, molto grande - 515.377.520.732.011.331.036.461.129.765.621.272.702.107.522.001 - così grande che diventa molto difficile lavorare con. Piuttosto che usare la risposta a 48 cifre per 3, faremmo meglio a scriverla come esponente, quindi (((((((3)*3))))*3)). Ricorda che prendendo l`esponente di un esponente si ottiene l`effetto di moltiplicare gli esponenti ((x) = x).Ora possiamo determinare il resto. Inizia a risolvere per (((((((3)*3))))*3)) nell`insieme interno di parentesi e risolvi, dividendo ogni passaggio per 100. Una volta trovato il resto, lo useremo per il passaggio successivo anziché come risposta effettiva. Vedi sotto:(((((((9)*3))))*3)) - 9/100 non ha resto, quindi possiamo continuare.((((((27)))))*3)) - 27/100 non ha resto, quindi possiamo continuare.(((((729)))*3)) - 729/100 = 7 L 29. Il nostro resto è 29. Passiamo al passaggio successivo, non al 729.((((29=841))*3)) - 841/100 = 8 R 41. Utilizzeremo nuovamente il nostro resto 41 nel passaggio successivo.(((41 = 1681)*3)) - 1681/100 = 16 R 81. Useremo il nostro resto 81 nel passaggio successivo.((81*3 = 243)) - 243/100 = 2 R 43. Useremo il nostro resto 43 nel passaggio successivo.(43 = 1849) - 1849/100 = 18 R 49. Useremo il nostro resto 49 nel passaggio successivo.49 = 2401 - 2401/100 = 24 R 1. il nostro resto finale è 1. In altre parole, 3 (mod 100) = 1. Nota che questa è la stessa risposta che abbiamo calcolato nel passaggio precedente!5. Controlla se un (mod n) = un (mod n). In caso contrario, n è composto. Se vero, allora n. è probabilmente, (ma non sono sicuro) un numero primo. Ripetere il test con valori diversi per a può rendere più certo il risultato, ma ci sono rari numeri composti che soddisfano il teorema di Fermat per tutto valori di a. Questi sono chiamati numeri di Carmichael: il più piccolo di questi numeri è 561.
Nel nostro esempio, 3 (mod 100) = 1 e 3 (mod 100) = 3. 1 ≠ 3, quindi possiamo dire che 100 è un numero composto.6. Usa i numeri di Carmichael per essere sicuro del tuo risultato. Sapere quali numeri soddisfano la sequenza di Carmichael prima di continuare può farti risparmiare un sacco di mal di testa sul fatto che un numero sia primo o meno. In generale, i numeri di Carmichael sono il prodotto di singoli numeri primi, dove per tutti i numeri primi vale che se p è un divisore di n, allora anche p-1 è un divisore di n-1. L`elenco online dei numeri di Carmichael può essere molto utile per determinare se un numero è primo usando il piccolo teorema di Fermat.
Metodo 3 di 4: utilizzo del test Miller-Rabin
Il test di Miller-Rabin funziona allo stesso modo del piccolo teorema di Fermat, ma tratta i numeri anomali come i numeri di Carmichael in un modo migliore.
1. Coppia n è un numero dispari di cui vogliamo testare la primalità. Come nei metodi sopra indicati, n è la variabile di cui vogliamo determinare la primalità.
2. Impegnato n-1 di sconto nella forma 2 × D per cui D è strano. Il numero n è primo se è dispari. Quindi n - 1 deve essere pari. Poiché n - 1 è pari, può essere scritto come una potenza di 2 volte un numero dispari . Quindi,4 = 2 × 1; 80 = 2 × 5; e così via.
Supponiamo di voler determinare se n = 321 è un numero primo. 321 - 1 = 320, che possiamo esprimere come 2×5.In questo caso n = 321 è un numero adatto. Determinare n – 1 per n = 371 può richiedere un valore elevato per d, il che rende l`intero processo più difficile in una fase successiva. 371 - 1 = 370 = 2 × 1853. Scegli un numero qualsiasi un tra 2 e n-1. Il numero esatto che scegli non ha importanza, solo che deve essere minore di n e maggiore di 1.
Nel nostro esempio con n = 321, scegliamo a = 100.4. calcolare un (mod n). Se un = 1 o -1 (mod n), quindi resisten il test di Miller-Rabin ed è probabilmente un numero primo. Come per il piccolo teorema di Fermat, questo test non può determinare la primalità di un numero con assoluta certezza, ma ha bisogno di test aggiuntivi per farlo.
Nel nostro esempio con n = 321, a (mod n) = 100 (mod 321). 100 = 10.000.000.000 (mod. 321) = 313. Usiamo una calcolatrice speciale, o il metodo stenografico con un esponente come descritto in precedenza, per trovare il resto di 100/321.Poiché non abbiamo ottenuto 1 o -1, non possiamo dire con certezza che n sia primo. Ma c`è altro che dobbiamo fare – continua a leggere.5. Poiché il risultato non è uguale a 1 o -1, calcolaun, un,... e così via, fino a unD. Calcola a alla potenza di d volte, fino a 2. Se uno di questi è uguale a 1 o -1 (mod n), quindi resiste n il test di Miller-Rabin ed è probabilmente il primo. Dopo aver determinato che n supera il test, controlla la tua risposta (vedi il passaggio seguente). Se n non supera nessuno di questi test, allora è a composto numero.
Ricordiamo che nel nostro esempio il valore di a è uguale a 100, il valore di s è 6 e di d5. Procederemo con i test come di seguito indicato:100 = 1×10.1×10 (mod. 321) = 64. 64 ` 1 o -1. Stai calmo.100 = 1×10.1×10 (mod. 321) = 244. 244 ≠ 1 o -1.A questo punto possiamo fermarci. s - 1 = 6 - 1 = 5. Ora abbiamo raggiunto 4d = 2 e non ci sono potenze di 2 volte d sotto 5d. Poiché nessuno dei nostri calcoli ha dato come risposta 1 o -1, possiamo dire che n = 321 a composto il numero è.6. Se n soddisfa il test di Miller-Rabin, quindi ripeti per gli altri valori di un. Se hai scoperto che il valore di n potrebbe essere primo, riprova con un valore casuale diverso per a per confermare il risultato del test. Se n è effettivamente primo, allora questo vale per qualsiasi valore di a. Se n è un numero composto, fallirà per tre quarti dei valori di a. Questo ti dà più certezza rispetto al Piccolo Teorema di Fermat, in cui certi numeri composti (i numeri di Carmichael) superano il test per ogni valore di a.
Metodo 4 di 4: Utilizzo del teorema cinese del resto
1.
Scegli due numeri. Uno dei numeri non è primo e il secondo è il numero testato per la primalità.
- "numero di prova1" = 35
- Numero di prova2 = 97
2. Scegliere due punti dati maggiori di zero e minori di TestNumber1, rispettivamente TestNumber2. Non possono essere la stessa cosa.
Dati1 = 1Dati2 = 23. Calcolare l`MMI (Mathematical Multiplicative Inverse) per TestNumber1 e TestNumber2
Calcola l`MMIMMI1 = Numero test2 ^ -1 Numero test mod1MMI2 = Numero test1 ^ -1 Numero test mod2Solo per i numeri primi (ci sarà un risultato per i non numeri primi, ma questo non è l`MMI):MMI1 = (TestNumber2 ^ (TestNumber1-2)) %TestNumber1MMI2 = (Numero prova1 ^ (Numero prova-2)) % Numero prova2Così:MMI1 = (97^33) %35MMI2 = (35^95) %974. Creare una tabella binaria per ogni MMI fino a Log2 del Modulo
Per l`MMI1F(1) = Numero prova2 % Numero prova1 = 97 % 35 = 27F(2) = F(1) * F(1) % Numero test1 = 27 * 27 % 35 = 29F(4) = F(2) * F(2) % Numero test1 = 29 * 29 % 35 = 1F(8) = F(4) * F(4) % Numero test1 = 1 * 1 % 35 = 1F(16) =F(8) * F(8) % Numero test1 = 1 * 1 % 35 = 1F(32) = F(16) * F(16) % Numero test1 = 1 * 1 % 35 = 1Calcola il logaritmo binario di Testnumber1 - 235 -2 = 33 (10001) base 2MMI1 = FA(33) = FA(32) * FA(1) mod 35MMI1 = F(33) = 1 * 27 Mod 35MMI1 = 27Per MMI2F(1) = Numero prova1 % Numero prova2 = 35 % 97 = 35F(2) = F(1) * F(1) % Numero test2 = 35 * 35 mod 97 = 61F(4) = F(2) * F(2) % Numero test2 = 61 * 61 mod 97 = 35F(8)= F(4) * F(4) % Numero test2 = 35 * 35 mod 97 = 61F(16) = F(8) * F(8) % Numero test2 = 61 * 61 mod 97 = 35F(32)= F(16) * F(16) % Numero test2 = 35 * 35 mod 97 = 61F(64)= F(32) * F(32) % Numero test2 = 61 * 61 mod 97 = 35F(128) = F(64) * F(64) % Numero test2 = 35 * 35 mod 97 = 61Calcola il logaritmo binario di TestNumber2 - 297 - 2 = 95 = (1011111) base 2MMI2 = (((((FA(64) * FA(16) % 97) * FA(8) % 97) * FA(4) % 97) * FA(2) % 97) * FA(1) % 97 )MMI2 = ((((((35 * 35) %97) * 61) % 97) * 35% 97) * 61% 97) * 35% 97)MMI2 = 615. Calcola (Data1 * TestNumber2 * MMI1 + Data2 *TestNumber1 * MMI2) % (TestNumber1 * TestNumber)
Risposta = (1 * 97 * 27 + 2 * 35 * 61) % (97 * 35)Risposta = (2619 + 4270) % 3395Risposta = 996. Controlla se "numero di prova1" non è primo 1
Calcola (Risposta - Dati1) % Numero test199 -1 % 35 = 28Poiché 28 è maggiore di 0, 35 non è primo7. Controlla se TestNumber2 è un numero primo
Calcola (Risposta - Dati2) % Test Numero299 - 2% 97 = 0Poiché 0 è uguale a 0, 97 è un potenziale primo8. Ripetere i passaggi da 1 a 7 almeno altre due volte.
Se il passaggio 7 è uguale a 0:Usane un altro "numero di prova1" se TestNumber1 non è primo.Utilizzare un altro TestNumber1 in cui un TestNumber1 è in realtà un numero primo.In questo caso, i passaggi 6 e 7 sono uguali a 0.Utilizzare punti dati diversi per data1 e data2.Se il passaggio 7 è sempre uguale a 0, la probabilità che il numero 2 sia primo è molto alta.È noto che i passaggi da 1 a 7 non sono corretti in alcuni casi quando il primo numero non è primo e il secondo è un fattore primo del numero non primo "numero di prova1".Funziona in tutti gli scenari in cui entrambi i numeri sono primi.Il motivo per cui i passaggi da 1 a 7 vengono ripetuti è perché ci sono alcuni scenari in cui, anche se TestNumber1 non è primo e TestNumber2 non è primo, uno dei numeri del passaggio 7 è ancora zero.Queste condizioni sono rare.Modificando TestNumber1 in un altro numero non primo, se TestNumber2 non è primo, TestNumber2 non sarà più uguale a zero, nel passaggio 7. Ad eccezione del caso in cui "numero di prova1" è un fattore di TestNumber2, i numeri primi saranno sempre zero nel passaggio 7.Consigli
- I 168 numeri primi sotto 1000 sono: 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
- Quando il tentativo di dividere è più lento rispetto ai metodi più sofisticati, è comunque efficiente per numeri più piccoli. Anche quando si testano numeri più grandi, non è raro controllare i numeri piccoli prima di passare ai metodi più avanzati.
Necessità
- Carta, penna, matita e/o calcolatrice per l`allenamento
Articoli sull'argomento "Controlla se un numero è primo"