简单语句中的BigInteger逻辑问题

时间:2015-11-29 19:49:58

标签: java biginteger logical-operators

所以我正在写一个素数测试程序,在我的代码的某个地方我有这个:

BigInteger temp = BigInteger.valueOf(0);
BigInteger p_Big = BigInteger.valueOf(p); // p is just an integer

temp = power(a, p-1); // a method to calculate a^(p-1)
temp = temp.mod(p_Big);

if(temp != BigInteger.ONE){
    return false;
}

问题是,对于应该返回false的值,我得到true,而奇怪的是,当我这样做时

System.out.println(temp+","+BigInteger.ONE);

p = 5, a = 2我得

1,1

那是什么导致它返回false

1 个答案:

答案 0 :(得分:1)

替换

if(temp != BigInteger.ONE)

if(!temp.equals(BigInteger.ONE))