搞了一个小时不清楚为什么,求高手赐教
这个程序是求输入一个数字n,求1到n之前的素数。1虽然不是素数,但是从取余的语法上判断是正确的,为什么找个执行结果是错误的呢?无论输入神马数只输出1,
我把IsPrime函数的for循环中的i的初值改为2即正确。
# include <stdio.h>
bool IsPrime(int val);
int main()
{
int i, n;
printf("please n\n");
scanf("%d", &n);
for(i=1; i<=n; ++i)
{
if(IsPrime(i))
printf("%d\n", i);
}
return 0;
}
bool IsPrime(int val)
{
int i;
for(i=1;i<=val;++i) //为什么这里必须是2
{
if(0 == val%i)
break;
}
if(i == val )
return true;
else
return false;
}