1还真不是素数
楼主看看自己的main
void main()
{
int b,cnt=0,a[1000];
for(
b=1;b<=1000;b++)
{if(
b<2)
break; ......
}
......
}
标出来的地方,第一次循环就会直接跳出来,无法再循环,跳过一次循环应该使用continue而不是break;
另外,当b>=2之后,所有的循环都会导致函数赋值给数组,不是素数就是NULL,并且cnt会自加一次,会出现不可预料的错误
还有就是susu函数中,if(..>..)完全可以省掉,将return放在for函数外,而在里面返回一个数值。这类函数最好是返回一个数关于素数的判断值,而不是返回这个素数,如果想使它返回一个存储素数数组的话,应当将数组指针输入划为一个子模块。5楼的第一个就是作为一个模块来判断的。
楼主看看5楼写的,排除掉偶数为素数的值可以提高效率,求素数一个方法可以使用5楼第一个的,也可以提高效率,不必去除到数的一半。
呵呵,5楼关于关系运算符==的用法好奇怪啊。
[此贴子已经被作者于2006-2-1 4:20:08编辑过]