Il controllo di primalità è probabilmente uno di "quei" difficili problemi in matematica. Quindi, qual è l'algoritmo migliore e più veloce disponibile per verificare la primalità di un numero enorme. Il più grezzo e il modo più lento probabilmente è:Algoritmo di controllo di primalità
public static bool IsPrime(int i)
{
for (var x = 2; x < i - 1; i++)
{
if (i % x == 0)
{
return false;
}
}
return true;
}
Recentemente ho letto che l'algoritmo RSA 768-bit è stato craccato usando la forza bruta, utilizzando una matrice di grid computing. Come eseguono la forza bruta su un enorme numero primo? Ogni unità di elaborazione prende una serie di numeri, lo calcola e controlla la primalità di tutto il numero che si trova in quell'intervallo?
non ti serve solo il ciclo for per raggiungere la metà del numero che stai cercando di trovare la primalità di? ad esempio se il tuo numero era 100, allora il 50 è il numero più grande che potrebbe essere un fattore, no? –
ceil (sqrt (i)) è il più grande fattore che è necessario controllare – swegi
forse sono stupido ma avrei pensato che floor (sqrt (i)) era il più grande fattore che dovevi controllare? –