BigInteger循环无限执行

Spa*_*row 1 java biginteger

while(true) {
    if(((d.multiply(e)).mod(phi1)).equals(BigInteger.ONE))
        break;
    d.add(BigInteger.ONE);
}
Run Code Online (Sandbox Code Playgroud)

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

while(true) {
    if((d*e)%phil==1) 
        break;
    d++;
}
Run Code Online (Sandbox Code Playgroud)

这里e=17,phil=12816d=1开始.

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

izo*_*ica 6

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

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