新手求教一个质数判断的问题
public static bool IsPrime(int n)
{
if (n <= 1)
{
return false;
}
else
{
int i = 2;
for (i = 2; i < n; i++)
{
if (n % i == 0)
{
return false;
}
}
if (i >= n)
{
return true;
}
}
}
刚开始学C#,因为老师的方法要单独判断2,所以我想到这种方法,但是提示并非所有的代码路径都有返回值,我想了一晚上,就是没想出还有什么情况会没有返回值,憋死我了,等不到明天请教老师了,所以来请教下,不然会睡不着啊--
[解决办法]
public static bool IsPrime(int n)
{
if (n <= 1)
{
return false;
}
else
{
int i = 2;
for (i = 2; i < n; i++)
{
if (n % i == 0)
{
return false;
}
}
if (i >= n)
{
return true;
}
return false;
}
}
[解决办法]
在最后一个括号上方加上return false;
这个很好理解,在循环不执行,并且i<=n的情况下,或者循环执行了,但是n % i == 0始终不成立并且并且i<=n的情况下没有返回值。
编译器不会在编译的时候去判断一个循环是否执行以及条件变量是否成立,除非常量表达式。