查找号码的代码是否为素数

时间:2017-10-08 14:23:04

标签: c# c#-4.0

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;}
      }
    }
  }

1 个答案:

答案 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;
}
相关问题