题解 | #筛选法求素数#
筛选法求素数
http://www.nowcoder.com/practice/06c3dcc303654ef4926654023eca1e5a
#include<stdio.h>
int main(void)
{
int n;
while((scanf("%d",&n))!=EOF)
{
int *a=(int *)malloc(sizeof(int)*(n-1));//动态分配一个数组
int count=0;
for(int i=0;i<n-1;i++)//为数组赋值
a[i]=i+2;
for(int i=0;i<n-1;i++)//注意前面a[0]和a[1]分别为2和3
{
if((1!=a[i]/2&&0==a[i]%2)||(1!=a[i]/3&&0==a[i]%3)||(1!=a[i]/5&&0==a[i]%5)||(1!=a[i]/7&&0==a[i]%7))
{
a[i]=0;
count++;
}
}
for(int i=0;i<n-1;i++)
{
if(a[i]!=0)
printf("%d ",a[i]);
}
printf("\n%d",count);
}
return 0;
}