java – 如何比较BigInteger的值作为循环中的条件?

我想比较一个BigInteger(base)的值是否>另一个BigInteger(素数)的值,如果’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 – 无论如何要从Double转换为BigInteger?


下一篇:java-分配给BigInteger数组中的元素时出错