In number theory, Dixon's factorization method (also Dixon's random squares method or Dixon's algorithm) is a general-purpose integer factorization algorithm; it is the prototypical factor base method. Unlike for other factor base methods, its run-time bound comes with a rigorous proof that does not rely on conjectures about the smoothness properties of the values taken by polynomial. The algorithm was designed by John D. Dixon, a mathematician at Carleton University, and was published in 1981.
function onlyUnique(value, index, self) { return self.indexOf(value) === index; } function dixon(n) { //Logic var base = [2, 3, 5, 7]; var start = parseInt(Math.sqrt(n)); var pairs=[]; var len= 4; for(var i = start; i < n; i++) { var v=[]; for(var j = 0; j < len; j++) { var lhs = parseInt(Math.pow(i,2))% n; var rhs = parseInt(Math.pow(base[j],2)) % n; if(lhs == rhs) { v.push(i); v.push(base[j]); pairs.push(v); } } } var newvec = []; len = pairs.length; for(var i = 0; i < len; i++){ var factor = stein_gcd(pairs[i][0] - pairs[i][1], n); if(factor != 1) newvec.push(factor); }