【模板】线性筛素数

memset(check,false,sizeof check);
int tot = 0;
for(int i = 2;i<=N;++i) {
    if(!check[i]) prime[tot++] = i;
    for(int j = 0;j<tot;++j) {
        if( i * prime[j] > N ) break;
        check[ i * prime[j] ] = true;
        if( i % prime[j] == 0 ) break; } }
int is_prime[10000000];
void find(int n)
{
    //memset(is_prime,1,sizeof(is_prime));
    for(int i=2;i<=n;i++)
        is_prime[i]=1;
    for(int i=2;i*i<=n;i++)
        if(is_prime[i])
            for(int j=i*i;j<=n;j+=i)
                is_prime[j]=0;
}
原文地址:https://www.cnblogs.com/akioi/p/12207093.html