2

嗨,我有一个算法,我需要对 BigInt 应用操作。

我知道 BigInt 可以使用 Maths 类进行操作,例如:

import java.math.*;

BigInteger a;
BigInteger b = BigInteger.ZERO;
BigInteger c = BigInteger.ONE;
BigInteger d = new BigInteger ("3");
BigInteger e = BigInteger.valueOf(5);

a.multiply(b);
a.add(b);
a.substract(b);
a.divide(b);

我需要能够申请大于一段时间的条件,例如

while (a > 0) {

这给了我一个语法错误,说“二元运算符'>'的操作数类型错误,第一种类型:java.math.BigInteger,第二种类型:int。

我还需要能够将模 (%) 运算符应用于 BigInteger。

b = a % c;

任何人都可以建议这样做的方法吗?

如果没有解决方案,那么我将不得不使用 reduce 函数以某种方式将我的 BigInteger 操纵为唯一的 Long (这远非理想)。

Silverzx。

4

2 回答 2

7

要比较BigInteger,请使用BigInteger.compareTo.

while(a.compareTo(BigInteger.ZERO) > 0)
    //...

对于模 ( %),使用BigInteger.mod.

BigInteger blah = a.mod(b);
于 2013-03-01T16:01:57.993 回答
0

您可以使用 BigIntegers 进行比较compareTo,但在特殊情况下,当您与 0 进行比较时,该signum方法也可以完成这项工作(并且可能会更快一些)。至于取给定除法的余数,您可以使用该方法mod(这里是更好的选择),或者使用divideAndRemainderwhich 返回一个包含除法结果和余数的数组。

于 2013-03-01T16:00:18.677 回答