小香蕉找素数(埃氏筛选法)
小香蕉是个文科生,一天,4357问小香蕉一个问题,4357希望小香蕉可以告诉他从1到N( 1 < N <= 1000000)有多少个素数。小香蕉需要help。。。。。
输入:
多组输入,每次输入包括一行,仅一个数字N。
#include"math.h"
#include"stdio.h"
long long a[1000000];//定义数组足够大
int main()
{long long i,j,k,s,n;
while(~scanf("%lld",&n))//多组输入
{ for(i=2;i<=n;i++)从2开始,将所有的数组元素赋值为1,表示全都是素数
a[i]=1;
for(i=2;i<=n;i++)从2开始,依次筛选
{ if(a[i]!=0)//!=0表示此处的下标值为素数
printf("%lld\n",i);并输出
for(k=2*i;k<=n;k=k+i)将此素数的倍数,依次赋值为0。表不为素数了
a[k]=0;
}
}
}