使用BigIntegers时,代码示例无限循环,但适用于整数

Spa*_*row 0 java biginteger

我整数的实际情况是

int d = 1;

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

我已经在BigInteger中写了这个条件

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

当我在BigInteger中执行上面的代码时,它会无限执行.但是,当我以整数执行代码时,它会完美地执行并从循环中退出.请告诉我错误是什么.

Gre*_*pff 7

if(((e.multiply(d)).mod(f)).equals(1))
Run Code Online (Sandbox Code Playgroud)

你不能做与a BigInteger和autoboxed 相等的比较Integer.

你需要这样做:

if(((e.multiply(d)).mod(f)).equals(BigInteger.ONE))
Run Code Online (Sandbox Code Playgroud)