User_67128:
Eu estava olhando para Java BigInteger método gcd código fonte. I encontrado método hybridGCD () que não foi definido em qualquer lugar na classe.
aqui está o link: http://hg.openjdk.java.net/jdk/jdk11/file/tip/src/java.base/share/classes/java/math/BigInteger.java
public BigInteger gcd(BigInteger val) {
if (val.signum == 0)
return this.abs();
else if (this.signum == 0)
return val.abs();
MutableBigInteger a = new MutableBigInteger(this);
MutableBigInteger b = new MutableBigInteger(val);
MutableBigInteger result = a.hybridGCD(b);
return result.toBigInteger(1);
}
O método gcd não estava a responder por uma hora durante dois números bastante grandes (contendo milhões de dígitos cada).
Scott Hunter:
O método é definido aqui (uma vez que é parte de MutableBigInteger):