% operator for BigInteger in java

2022-09-03 16:56:38

如何使用大整数?喜欢a%b

...
BigInteger val = new BigInteger("1254789363254125");
...

boolean odd(val){
   if(val%2!=0)
      return true;
   return false;
...

Eclipse说,对于BigInteger,运算符%是未定义的。

有什么想法吗?


答案 1

喜欢这个:

BigInteger val = new BigInteger("1254789363254125");
public boolean odd(BigInteger val) {
    if(!val.mod(new BigInteger("2")).equals(BigInteger.ZERO))
        return true;
    return false;
}

或者正如用户Duncan在评论中建议的那样,我们可以完全删除if语句,如下所示:

BigInteger val = new BigInteger("1254789363254125");
public boolean odd(BigInteger val) {
    return !val.mod(new BigInteger("2")).equals(BigInteger.ZERO));
}

答案 2

一种更有效的方法是检查最后一位。如果它是(又名)数字是偶数,否则它是奇数。0false

public boolean odd(BigInteger i){
    return i.testBit(0);
}

odd(BigInteger.valueOf(1));//true
odd(BigInteger.valueOf(2));//false
odd(BigInteger.valueOf(101));//true
odd(BigInteger.valueOf(100));//false

此外,它的代码行数也更少。


推荐