code: MutableBigInteger hybridGCD(MutableBigInteger b) {
          // Use Euclid's algorithm until the numbers are approximately the
          // same length, then use the binary GCD algorithm to find the GCD.
          MutableBigInteger a = this;
          MutableBigInteger q = new MutableBigInteger();
  
          while (b.intLen != 0) {
              if (Math.abs(a.intLen - b.intLen) < 2)
                  return a.binaryGCD(b);
  
              MutableBigInteger r = a.divide(b, q);
              a = b;
              b = r;
          }
          return a;
      }
docs: Calculate GCD of this and b. This and b are changed by the computation.