java - 简单语句中的BigInteger逻辑问题

标签 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

最佳答案

替换

if(temp != BigInteger.ONE)

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

关于java - 简单语句中的BigInteger逻辑问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33987275/

相关文章:

pointers - big.Int 和 *big.Int 之间的区别,以及如何按值传递 big.Int

r - 用 R 中的逻辑向量对逻辑向量进行子集化

java - 从 scipy/wavfile/read 解析 'ValueError: Unexpected end of file.'

java - 如何在我的应用程序中使用一个对象实例

java - 如何使 session /缓存变量可用于我的 main.html 模板?

c++ - 我的程序一直在循环,永远不会到达 "return 0;"。是编译器不好还是代码不好?

java - 在 Java 的 if block 中使用逻辑运算符或按位运算符有区别吗?

java - Java程序的输出

java - BigInteger 没有自动装箱吗?

java - 为什么 BigDecimal 的标度不是 BigInteger?