如何操作 Java 的 BigIntegers

How to manipulate Java's BigIntegers

我想用 BigInteger 值执行此操作:

 while (Math.pow(A, n) <= factorial(B)) {
    if (factorial(B)%Math.pow(A, n) == 0) {
        powerA.add(n);
    }
    n++;
}

我已经设法用 BigInteger 做一个阶乘函数,但我不知道如何使测试条件成为“if”。

但我有:

BigInteger bi = BigInteger.valueOf(A).pow(n);
while (factorial(B).compareTo(bi) == 1) {
    if (factorial(B).mod(bi) == 0) {
        powerA.add(n);
    }
    n++;
}  

Java BigInteger 是一个 class,就像 String 或任何用户定义的对象是一个 class,所以 == 将比较身份,这不是您想要的。你需要 .equals.

if (factorial(B).mod(bi).equals(BigInteger.ZERO)) {
  ...
}

还值得注意的是,大多数 BigInteger 方法 不会 改变现有值,而是 return 一个新值。所以要添加到 powerA,你想做

powerA = powerA.add(n);