输入包括一行,仅一个数字N。
输出在(1, N]区间内的所有的素数。
提示:想像将(1, N]的数字看成沙子和小石头,视非素数为沙子,视素数为小石头。将沙子筛走,剩下的就是小石头了。考虑到N最大也就是10000,你可以开一个长度为10000的数组,让数组元素的值作为筛去与否的标志,比如筛去以后让元素值为1,然后依次输出就可以了。当然,如果你有更好的办法,也可以试试哦!
#include <stdio.h>
int n;
int a, b, c=1;
int main(){
scanf("%d",&n);
for(a = 1; a<n+1; a++){
c = 1;
for(b = 2; b<a; b++){
if(a % b == 0)
c = 0;
}
if((c == 1)&&(a!=1)){
printf("%d\n",a);
}
}
return 0;
}