usama8800 usama8800 - 5 months ago 18
Java Question

Java - isPrime function

This is my isPrime

private static boolean isPrime(int num) {
if (num % 2 == 0) return false;
for (int i = 3; i * i < num; i += 2)
if (num % i == 0) return false;
return true;
}


I put
isPrime(9)
and it returns true. What is wrong with the function?

Answer

Your condition should be i * i <= num

private static boolean isPrime(int num) {
        if (num < 2) return false;
        if (num == 2) return true;
        if (num % 2 == 0) return false;
        for (int i = 3; i * i <= num; i += 2)
            if (num % i == 0) return false;
        return true;
}

You didn't take number 9 in your consideration so 9<9 will result false. But you need to check 9.