关于筛法
埃筛(Eratosthenes筛法)人人都会
- 思想就是质数的倍数一定不是质数
埃筛瓶颈在于时间是
,数据太大会TLE
怎么办呢?
欧拉筛(线性筛法)
线性筛可以做到
思考筛到当前第 个数,第 个质数
不像埃筛,如果 就直接
因为 是 的约数,所以
这样后面的不用再筛了,均摊下来是 时间复杂度
code
好写得很
void init()
{
memset(bz,1,sizeof(bz));
tot=0;
for (int i=2;i<MAXN;i++)
{
if (bz[i])p[tot++]=i;
for (int j=0;j<tot && i*p[j]<=MAXN;j++)
{
bz[i*p[j]]=0;
if (i%p[j]==0)break;
}
}
}