我的isPrime方法有什么问题?


问题内容

这是我的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;
}

我把isPrime(9)它放回去true。该方法有什么问题?


问题答案:

您的条件应为i * i <= num

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

您未考虑数字9,因此9 <9将导致错误。但是您需要检查9。