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;
}