JSFiddle - React, Tailwind, and code Playground
JavaScript
(function(){
function Pollard_RHO(x) {
this.N = parseInt(x, 10);
this.gdc = function(a, b) {
var r;
while (b != 0) {
r = a % b;
a = b;
b = r;
}
return a;
}
this.getFactor = function() {
if (_isValid.call(this) === false) {
return;
}
var factor = 1;
var c_size = 2;
var x = 2;
var x_fixed = 2;
while (factor === 1) {
for (var i = 1; i <= c_size && factor <= 1; i++) {
x = (Math.pow(x, x) + 1) % this.N;
factor = this.gdc(x - x_fixed, this.N);
}
c_size *= 2;
x_fixed = x;
}
return factor;
}
function _isValid() {
if (!this.N) {
console.error('Te rog sa introduci un numar');
return false;
}
if (this.N < 2) {
console.error('Introdu un numar mai mare sau egal cu 2');
return false;
}
if (this.N > 221) {
console.error('S-ar putea sa crape browserul, e JS pana la urma :D');
return false;
}
return true;
}
}
var Factorize = new Pollard_RHO(221);
console.log(Factorize.getFactor());
})();