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
最初。
但即使等待了很长时间,循环仍在执行。可能是什么错误?
最佳答案
BigInteger
是不可变的,对它的所有操作都会返回一个新实例,而不是修改当前实例。因此 d.add(BigInteger.ONE);
不会改变 d
的值。
要解决此问题,请编写:d = d.add(BigInteger.ONE);
关于java - BigInteger 循环无限执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23345474/