Big numbers

We are going to look at how to work with big number. Bigger than what can fit into primitive types like int and long.

Integers

Normally, we work with primitive types. Here is an example loop that will try to verify if a number is prime number.

boolean isPrime = true
int candidate = 999
for (int i = 2; i < candidate - 1; i++) {
  int remainder = candidate % i;
  if (remainder == 0) isPrime = false
}
println isPrime

How would the same code look like using BigInteger, so we can check whether a very very very big number is prime number?

boolean isPrime = true;
BigInteger candidate = new BigInteger("999");
for (BigInteger i = BigInteger.valueOf(1); i.compareTo(candidate) < 0; i = i.add(BigInteger.ONE)) {
  BigInteger remainder = candidate.remainder(i);
  if (remainder == 0) isPrime = false;
}
println isPrime;

Try to experiment, try to put there really big number and find the biggest prime number (you might need plenty of time to do that). You can try to verify if 1001000000000000000000000000000000023 is a prime number ;-)

Last updated