public static bool IsPrime(int n)
{
if (n == 0 || n==1) { return false;}
else
{
for (int i=2;i<=n/2;i++)
{
if(n/i == 0) {return false;}
else {return true;}
}
}
}
答案 0 :(得分:1)
这实际上是代码审查 - 但我不确定它是否真的适合CodeReview SE,因为它......
对于初学者,当else
子句导致返回时,您不需要if
。
然后,您当然要检查n%i
而不是n/i
。
此外,您的限制可以是n的平方根而不是n / 2 - 只是优化。
然后你想要在你返回真实之前经历你的循环直到你的极限。
最后,你想要考虑你想对负面n做什么。如果您希望所有负数n都返回false,则您的第一个if
只会变为if n < 2
。否则,您必须为n == -1
添加一个子句。
将所有这些放在一起(除了平方根优化),你会得到:
public static bool IsPrime(int n)
{
if (n < 2) return false;
for (int i=2;i<=n/2;i++)
{
if(n%i == 0) return false;
}
return true;
}