【发布时间】:2012-10-05 05:37:24
【问题描述】:
这是我的代码,应该只输出素数。
#include <stdio.h>
int prime(int n){
int j;
for (j=2;j<=n/2;j++){
if((n%j)==0){
return 0;
}
else{
return 1;
}
}
}
void main(){
int i,p;
for (i=2;i<=100;i++){
p=prime(i);
if(p==1){
printf("%d \n",i);
}
}
}
结果是 2,3,7,9,11,13,15....
不是 2,3,5,7,11,13....
我做错了什么?
【问题讨论】:
-
我虽然作业标签已被弃用..
-
prime中的for循环如果总是在有机会重复之前返回,它的作用是什么? -
另一种没有任何余数的方法是埃拉托色尼的“展开”筛子:stackoverflow.com/questions/5200879/…