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=12816并d=1开始.
但即使在等待很长时间之后,循环仍在执行.可能是什么错误?
BigInteger是不可变的,它上面的所有操作都返回一个新实例而不是修改当前实例.因此d.add(BigInteger.ONE);不会改变价值d.
要解决问题,请写: d = d.add(BigInteger.ONE);
| 归档时间: |
|
| 查看次数: |
58 次 |
| 最近记录: |