为什么会有无限循环?关于BigInteger.remainder()

时间:2015-09-14 18:19:00

标签: java loops infinite-loop biginteger

public class Ex14_11 {
public static void main(String[] args){
    long b = Long.MAX_VALUE;
    BigInteger a = new BigInteger(Long.toString(b));
    int count = 0;
    BigInteger c = new BigInteger("5");
    BigInteger d = new BigInteger("6");
    BigInteger e = new BigInteger("0");
    while( count < 10 ){
        a.add(BigInteger.ONE);
        if(a.remainder(d) == new BigInteger("0") || a.remainder(c) == new BigInteger("0")){
            System.out.print(a);
            count++;
        }
    }


}

} 我需要找到大于Long.MAX_VALUE的前十个数字。所有数字应该能够精确地划分5或6。

1 个答案:

答案 0 :(得分:2)

a.remainder(d) == new BigInteger("0")

您无法使用==来比较BigInteger。使用a.remainder(d).equals(new BigInteger("0"))(类似地进行第二次比较)。请注意,Java语言中的a == new Foo(...) 总是为false。

此外,你必须写

a = a.add(BigInteger.ONE);

...因为你现在正在写的是

a + 1;

......实际上并没有对a做任何事情。