Java 大整数模';%';运作及;少于/多于操作

Java 大整数模';%';运作及;少于/多于操作,java,operators,long-integer,biginteger,modulo,Java,Operators,Long Integer,Biginteger,Modulo,嗨,我有一个算法,在这个算法中我需要对BigInt进行运算 我知道BigInt可以通过数学课进行操作,例如: 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(

嗨,我有一个算法,在这个算法中我需要对BigInt进行运算

我知道BigInt可以通过数学课进行操作,例如:

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.

对于比较大整数,您可以使用
compareTo
,但在特殊情况下,当您将
signum
方法与0进行比较时,也可以使用
signum
方法(并且可能会快一点)。对于给定除法的剩余部分,您可以使用
mod
方法(此处的更好选项)或者也可以使用
除法和mainder
,它返回一个包含除法结果和余数的数组。

要比较
大整数
,请使用

对于模(
%
),使用


还有。太好了,我现在会有一个谷歌,我看不出比较器是如何工作的,但是。mod是有意义的!非常感谢!@AlvinWong你应该加上这个作为答案。我不明白如何使用比较器来检查BigInt是否大于零。是这样吗?biginger n=“2712598012958912580129859?”"; BigInteger零=BigInteger.零;while(n.compareTo(zero)>0{@silverzx。或者,正如我所建议的:
while(n.signum()>0)
顺便说一下,在您提供的解决方案中,您不需要
zero
只需在循环中使用
biginger.zero
while(a.compareTo(BigInteger.ZERO) > 0)
    //...
BigInteger blah = a.mod(b);