素数打表模板

这个打表的效率貌似很高,据说几乎到了线性时间(并不知道真假)!!

bool visit[10100000];  
int prime[10000000];  
  
  
void init_prim()  
{  
    memset(visit, true, sizeof(visit));  
    int num = 0;  
    for (int i = 2; i <= n; ++i)  
    {  
        if (visit[i] == true)  
        {  
            num++;  
            prime[num] = i;  
        }  
        for (int j = 1; ((j <= num) && (i * prime[j] <= n));  ++j)  
        {  
            visit[i * prime[j]] = false;  
            if (i % prime[j] == 0) break; //点睛之笔  
        }  
    }  
}  


猜你喜欢

转载自blog.csdn.net/asd1637579311/article/details/79964802