我正在尝试比较一个 BigInteger(base) 的值是否大于另一个 BigInteger(prime) 的值,以及“a”的值是否不等于 1。如果 a 的值不为 1,则应跳出循环。我应该如何比较它们?
Random ran = new Random();
BigInteger prime = new BigInteger(16,ran);
BigInteger base,a,one;
one = new BigInteger("1");
for (int i = 0; i < 65535; i++){
while (base>prime){
base = new BigInteger(16,ran);
}
a = base.modPow(prime.subtract(one),prime);
System.out.println("a: "+a);
if (a != one){
break;
}
}
最佳答案
您可以使用 BigInteger.compareTo(BigInteger)
比较它们.
在您的情况下,这将是 while (base.compareTo(prime) > 0) {...}
。
此外,您的终止条件应从 if (a != one)
更改为 if (!a.equals(one))
因为两个 BigInteger
具有相同整数值的变量不一定引用相同的对象(这就是 ==
和 !=
测试的全部)。
关于java - 我如何比较 BigInteger 的值以用作循环中的条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6208348/