Dacă utilizați funcții de factoring existente, acest lucru poate fi rezolvat în câteva minute
pentru numere aleatoare de 200 de biți. Funcții de factoring de la Pari/GP, de exemplu.
Algoritmul de mai jos nu este doar factorizarea numerelor consecutive. Vezi mai jos.
Iată algoritmul general care a fost convertit într-un lucru
program:
Generați W, un număr aleatoriu de 200 de biți
sievelimit = 250
limită primă = 2000000
precalcul pr = produsul primelor prime limită primă
Pentru n1 = W+1 la W+limită de sită
Dacă n1 este de forma 6k+1 sau 6k+5
dacă gcd(n1,pr) este 1
f = factor(n1)
dacă numărul de factori ai lui n1 este 2 și ambii >2^50
imprimare Soluție f
Buclă
Linia:
dacă gcd(n1,pr) este 1
este o modalitate rapidă de a omite numerele care au factori primi sub 2 milionea primă.
Pasul de precalculare este optimizat în Pari/GP și durează doar 7.785 secunde pe hardware lent.
Pentru cel mai rău caz, un număr de 200 de biți, funcția factor din Pari/GP utilizează metoda MPQS și durează mai puțin de 30 de secunde pe hardware vechi.
Iată un număr aleator de 200 de biți W:
1567470448908230034126591070540826459978233372650796513704199
Programul factorizează doar un număr W+10 și găsește soluția
p1 = 5346955435967300929
p2 = 293151956787285973328498761492202409914321
p1 este de 63 de biți, p2 este de 138 de biți, n = p1*p2
|W-n| = 10, |W-n|< 2^12