BigInteger循环无限执行

时间:2014-04-28 15:45:16

标签: java biginteger

while(true) {
    if(((d.multiply(e)).mod(phi1)).equals(BigInteger.ONE))
        break;
    d.add(BigInteger.ONE);
}

我的程序中有以下代码,这意味着

while(true) {
    if((d*e)%phil==1) 
        break;
    d++;
}

此处,e=17phil=12816d=1最初。

但即使在等待很长时间后,循环仍在执行。可能是什么错误?

1 个答案:

答案 0 :(得分:6)

BigInteger是不可变的,它上面的所有操作都返回一个新实例而不是修改当前实例。因此d.add(BigInteger.ONE);不会更改d的值。

要解决此问题,请写下:d = d.add(BigInteger.ONE);