Java isPrime (long) Example Code


Hello, I am posting a relatively simple method to check if a number is primer or not (provided it fits in a positive java long variable). 

It is not perfect. 

It could fail. 

It should compile in all java versions AFAIK.


package gigasblade;


// If you have any comments and/or suggestions, please let me know!
public class IsPrime {
private static boolean isPrime(final long n) {
if (n <= 0) {
throw new IllegalArgumentException();
}
if (n <= 3) {
return true;
}
final long sqrtNPlus1 = (int) Math.sqrt((double) n) + 1;
for (int i = 2; i <= sqrtNPlus1 ; i++) {
if (n % i == 0) {
return false;
}
}
return true;
}

private static void checkIsPrime(long n) {
try {
System.out.println("isPrime(" + n + "): " + isPrime(n));
} catch (IllegalArgumentException e) {
System.err.println("isPrime(" + n + "): " + e);
}
}

public static void main(String[] args) {
for (int n = -5 ; n <= 18; n++) {
checkIsPrime(n);
}
}
}
isPrime(-5): java.lang.IllegalArgumentException
isPrime(-4): java.lang.IllegalArgumentException
isPrime(-3): java.lang.IllegalArgumentException
isPrime(-2): java.lang.IllegalArgumentException
isPrime(-1): java.lang.IllegalArgumentException
isPrime(0): java.lang.IllegalArgumentException
isPrime(1): true
isPrime(2): true
isPrime(3): true
isPrime(4): false
isPrime(5): true
isPrime(6): false
isPrime(7): true
isPrime(8): false
isPrime(9): false
isPrime(10): false
isPrime(11): true
isPrime(12): false
isPrime(13): true
isPrime(14): false
isPrime(15): false
isPrime(16): false
isPrime(17): true
isPrime(18): false

Process finished with exit code 0

Comments