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=17
,phil=12816
和d=1
最初。
但即使在等待很长时间后,循环仍在执行。可能是什么错误?
答案 0 :(得分:6)
BigInteger
是不可变的,它上面的所有操作都返回一个新实例而不是修改当前实例。因此d.add(BigInteger.ONE);
不会更改d
的值。
要解决此问题,请写下:d = d.add(BigInteger.ONE);