I am trying to compare if the value of one BigInteger(base) is > (greater than) the value of another BigInteger(prime) and if the value of ‘a’ is not equal to one. If value of a is not 1, it should break out of the loop. How should I compare them?
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;
}
}
You can compare them using
BigInteger.compareTo(BigInteger).In your case, this would be
while (base.compareTo(prime) > 0) {...}.Also, your termination condition should be changed from
if (a != one)toif (!a.equals(one))since twoBigIntegervariables with the same integer value are not necessarily referencing the same object (which is all that==and!=test).