Algoritmo rho di Pollard: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m a capo in eccesso
Etichette: Ripristino manuale Modifica visuale
 
(7 versioni intermedie di 6 utenti non mostrate)
Riga 3:
== Algoritmo ==
L'algoritmo si basa sulla generazione di una sequenza [[Numeri pseudo-casuali|pseudo-casuale]] di numeri [[aritmetica modulare|modulo]] ''n'' (che è il numero che si cerca di fattorizzare): una sequenza ampiamente usata è
:<math>\begin{cases}x_0=2\\ f(x_{i+1})=x_i^2+1\mod n\end{cases}</math>
dove ''x<sub>k</sub>'' è il ''k''-esimo numero della sequenza.
Se la successione è "sufficientemente casuale", allora si dovrebbe osservare un ciclo dopo circa <math>\sqrt{n\pi/2}</math> iterazioneiterazioni; se però ''p'' è un fattore di ''n'', allora la sequenza si ripeterà anche modulo ''p'', ma dopo circa <math>\sqrt{p\pi/2}</math> passi.
 
Poiché tuttavia ''p'' non è conosciuto, bisogna ricorrere ad un altro metodo per verificare le eventuali ripetizioni, e cioè calcolare il [[massimo comun divisore]] tra ''n'' e la differenza ''x<sub>i</sub>''-''x<sub>j</sub>'', per ogni coppia (''i'',''j''). Nella pratica, tuttavia, calcolare il massimo comun divisore per ogni coppia di indici renderebbe il test molto lento, quasi quanto il metodo delle divisioni per tentativi: si può dimostrare però che è sufficiente considerare le differenze ''x<sub>2i</sub>''-''x<sub>i</sub>'', velocizzando notevolmente l'esecuzione dell'algoritmo.
Riga 17:
#While (''d''=1)
##''x''=''f''(''x'');
##''y''=''f''(f''(''x''y));''
##''d''=MCD(''|x-y|'',''n'');
#Se ''d''=''n'' l'algoritmo fallisce; altrimenti ''d'' divide ''n''
Riga 23:
== Bibliografia ==
*Harold Davenport, ''Aritmetica superiore'', Bologna, Zanichelli, 1994. ISBN 88-08-09154-6
 
== Collegamenti esterni ==
 
{{portale|matematica}}
 
[[Categoria:Algoritmi numericiper la matematica|Rho di Pollard]]
[[Categoria:Teoria dei numeri]]