1. 程式人生 > >線性篩素數模板

線性篩素數模板

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<cnt&&p[j]*i<2000;j++)
        {
            tag[i*p
[j]]=1; if(i%p[j]==0) break; } } ind=cnt; }