如何操作 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);
我想用 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);