java中BigInteger的%运算符

Sae*_*dra 12 java biginteger

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

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

boolean odd(val){
   if(val%2!=0)
      return true;
   return false;
...
Run Code Online (Sandbox Code Playgroud)

Eclipse表示,对于BigInteger,运算符%未定义.

有任何想法吗?

jra*_*rad 21

像这样:

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

或者正如用户Duncan在评论中建议的那样,我们可以像这样完全取出if语句:

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


Dav*_*ica 5

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

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
Run Code Online (Sandbox Code Playgroud)

也减少了代码行。