Test di Miller-Rabin: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
→Altri progetti: Creato la sezione e aggiunto il template "Interprogetto" |
mNessun oggetto della modifica |
||
Riga 3:
==Definizione==
Sia ''n'' un numero intero positivo
Questo è il test di primalità che stavamo presentando:
# scegliamo a caso un intero ''b''<math>_1</math>, con 1<''b''<math>_1</math><''n'', e calcoliamo M.C.D.(''b''<math>_1</math>, ''n'');
# se M.C.D.(''b''<math>_1</math>, ''n'') > 1, allora ''n'' non è primo, ed abbiamo finito;
# se M.C.D.(''b''<math>_1</math>, ''n'') = 1, calcoliamo ''b''<math>_1^{t}</math> (mod ''n''). Se ''b''<math>_1^{t}</math> ≡ +1 (mod ''n'') oppure ''b''<math>_1^{t}</math> ≡
# se non vale che ''b''<math>_1^{t}</math> ≡ +1 (mod ''n'') oppure ''b''<math>_1^{t}</math> ≡
# se non vale che ''b''<math>_1^{2t}</math> ≡
Per tutti gli altri test {T<math>_m</math>}<math>_m</math>,
# scegliamo a caso un intero ''b''<math>_m</math>, con 1<''b''<math>_m</math><n, e calcoliamo M.C.D.(''b''<math>_m</math>, ''n'');
# se M.C.D.(''b''<math>_m</math>, ''n'') > 1, allora ''n'' non è primo, ed abbiamo finito;
# se M.C.D.(''b''<math>_m</math>, ''n'') = 1, calcoliamo ''b''<math>_m^{t}</math> (mod ''n''), e procediamo come nel primo test. In questo modo troviamo che ''n'' non è primo, oppure che ''n'' è pseudoprimo forte in base ''b''<math>_m</math>.
==Considerazioni finali sul test==
Si può subito notare che, a differenza dei [[Test
Per quanto riguarda l'affidabilità, anch'essa è molto buona in questo test. Infatti, nonostante sia un test probabilistico, quando effettuiamo il test T<math>_m</math>, sappiamo che la probabilità che n non sia primo e sia uno pseudoprimo forte in base ''b''<math>_m</math> è minore di 1/4, e, quindi, la probabilità che ''n'' non sia primo ma passi i test T<math>_1</math>, T<math>_2</math>, ... , T<math>_m</math> è minore di <math>\left(\frac{1}{4^{m}}\right)</math>, ossia piccolissima rispetto a quella del [[Test di Fermat]].
Assumendo l'[[Ipotesi di Riemann generalizzata]], il test di Miller-Rabin si può facilmente modificare in modo da diventare un vero test di primalità e l'algoritmo ad esso associato avrebbe costo <math>O((\log n)^4\log\log\log n)</math><ref>{{cita pubblicazione |cognome= Miller|nome= Gary |anno= 1976|titolo= Riemann's Hypothesis and Tests for Primality |rivista= J. Comput. System Sci.|volume= 13|numero= 3|pp= 300-317|lingua= inglese }} ([https://www.cs.cmu.edu/~glmiller/Publications/Papers/Mi76.pdf PDF])</ref>.
|