如何操作java的大整数

oyt4ldly  于 2021-07-08  发布在  Java
关注(0)|答案(1)|浏览(350)

我想用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++;
}
8ulbf1ek

8ulbf1ek1#

java BigInteger 是一个类,以同样的方式 String 或者任何用户定义的对象都是类,所以 == 会比较身份,这不是你想要的。你需要 .equals .

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

值得注意的是 BigInteger 方法不会改变现有值,而是返回一个新值。所以要添加到 powerA ,你想做什么

powerA = powerA.add(n);

相关问题