我的 isPrime 方法有什么问题? [英] What is wrong with my isPrime method?
本文介绍了我的 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 put isPrime(9)
and it returns true
. What is wrong with the method?
推荐答案
你的条件应该是 i * i <= num
Your condition should be 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.
You didn't take number 9 in your consideration so 9<9 will result false. But you need to check 9.
这篇关于我的 isPrime 方法有什么问题?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文