我的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。