我的整数实际情况是
int d = 1;
while(true)
{
if(((e*d)%f)==1)
{
break;
}
else
d++;
}
我已经在BigInteger中写了这个条件
while(true)
{
if(((e.multiply(d)).mod(f)).equals(1))
{
break;
}
else
d=d.add(BigInteger.ONE);
}
当我在BigInteger中执行上面的代码时,它会无限执行。但是,当我以整数执行代码时,它会完美地执行并从循环中退出。请告诉我错误是什么。
答案 0 :(得分:7)
if(((e.multiply(d)).mod(f)).equals(1))
您无法与BigInteger
和自动装箱Integer
进行等效比较。
你需要这样做:
if(((e.multiply(d)).mod(f)).equals(BigInteger.ONE))