Description
素数是指在大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数,例如2, 3, 5, 7, 11……
求n以内的素数个数,是指小于等于n的素数数量
例如n=4,因为小于4的素数是2、3,所以数量是2
Input
第一行输入一个t,表示下面将有t组测试数据。接下来的t行的每行包含参数n(0<=n<=1000000)
Output
对于每一组测试数据,输出的一行是n以内的素数个数。
Sample Input
3 18 9 11
Sample Output
7 4 5
所有的工作都在用户开始输入前做好
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
int t;
cin>>t;
bool isprime[1000001];
for(int i=2;i<1000001;i++)
isprime[i]=true;
for(int i=2;i<=1000;i++)
{
if(isprime[i])
{
for(int j=i*i;j<1000001;j+=i)
isprime[j]=false;
}
}
int num[1000001];
num[1]=0;
for(int i=2;i<1000001;i++)
{
if(isprime[i]==1)
num[i]=num[i-1]+1;
else
num[i]=num[i-1];
}
while(t--)
{
int n;
cin>>n;
cout<<num[n]<<endl;
}
return 0;
}