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

时间:2014-03-18 09:24:30

标签: java biginteger

我的整数实际情况是

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中执行上面的代码时,它会无限执行。但是,当我以整数执行代码时,它会完美地执行并从循环中退出。请告诉我错误是什么。

1 个答案:

答案 0 :(得分:7)

if(((e.multiply(d)).mod(f)).equals(1))

您无法与BigInteger和自动装箱Integer进行等效比较。

你需要这样做:

if(((e.multiply(d)).mod(f)).equals(BigInteger.ONE))