埃氏筛法
给定整数n求n以内有多少素数 n<=10^6
思路将2-n范围内的所有整数写下,其中最小的整数是二,将表中所用2的倍数都划掉,一直如此操作,当表中最小的数是m时把m的倍数划掉,没被划掉的说明前面没有他的倍数
复杂度可大致看作n
int p[1000010],n;
int solve(int n)
{
int cnt=0;
for(int i=2;i<=n;i++)
{
if(p[i]==0)
{
cnt++;
p[i]=1;
for(int j=2*i;j<=n;j+=i) p[j]=1;
}
}
return cnt;
}