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());
})();