线性筛素数模板

tag用来记录第i个数是否是素数
p中存储素数,下标从0开始
ind是有多少个素数

数据对应的范围和素数的个数,在数据量大的时候大致呈10倍的关系,也就是tag数组的大小起码是p数组大小的10倍

int p[2000];
bool tag[20000];
int ind;
void get_prime()
{
    int cnt=0;
    for(int i=2;i<2000;i++)
    {
        if(!tag[i])
            p[cnt++]=i;
        for(int j=0;j*i<2000;j++)
        {
            tag[i*p[j]]=1;
            if(i%p[j]==0)
                break;
        }
    }
    ind=cnt;
}

你可能感兴趣的:(代码模板)