造数组时间复杂度:O(n)
查询:O(1)
这里计数是从0开始的(质数)
#include<iostream>
using namespace std;
const int N=100000010;
bool nums[N];
long long f[N],cot=0;
int main(){
nums[1]=true;//1不是素数 true不是素数
long long n=1e8;
for(long long i=2;i<=n;i++)
{
if(!nums[i])
f[cot++]=i;
for(long long j=0;j<cot&&i*f[j]<=n;j++)
{
nums[f[j]*i]=true;
if(i%f[j]==0)
break;
}
}
return 0;
}