//欧拉筛模版
const int maxn=1e6+7;
int vis[maxn];
int prime[maxn]; //最后prime数组里面储存的是所有的素数,从小到大排列
void init()
{
int cnt=0;
vis[0]=vis[1]=1; //1代表不是素数,0代表是素数
for(int i=2;i<=1e5;i++)
{
if(vis[i]==0) prime[cnt++]=i;
for(int j=0; j<cnt && i*prime[j]<=maxn ; j++)
{
vis[i*prime[j]]=1; //欧拉筛模板
if(i%prime[j]==0) break;
}
}
}



京公网安备 11010502036488号