欧拉筛
m=0;
for(int i=2;i<=n;++i)vis[i]=1;//假设所有数为质数
for(int i=2;i<=n;++i){
if(vis[i])p[++m]=i;//当前是质数
for(int j=1;j<=m && p[j]*i<=n;++j){//从所有已知质数中从小到大枚举
vis[p[j]*i]=0;//当前为素数
if(i%p[j]==0)break;//若当前的i的因数包含p[j],则如果不停,那么i不作为最小质因数筛了下一个数,不满足线性复杂度,如,(3,4)不能筛12,只有(2,6)能
}
}