素数可能都会求,但是要是有时间限制呢。。。。。
在100MS下,求你n<1000000内素数个数。
Description
求小于n的所有素数的数量。
Input
多组输入,输入整数n(n<1000000),以0结束。
Output
输出n以内所有素数的个数。
Sample Input
10 0Sample Output
4
#include"stdio.h"
#include"string.h"
#include"stdlib.h"
#include"math.h"
int a[1000050];
int main()
{
int i,j;
for(i=0;i<=1000000;i++)
a[i]=1;
for(i=2;i<1000000;i++)
{
if(a[i]==1)
{
for(j=2;i*j<=1000000;j++)
{
a[i*j]=0;
}
}
}
int n;
while(scanf("%d",&n),n)
{
int cnt=0;
for( i=2;i<=n;i++)
{
if(a[i])
cnt++;
}
printf("%d\n",cnt);
}
return 0;
}