素数打表

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; //点睛之笔   
        }  
    }  
}  
void init_prime()  
{  
    int i, j;  
    for(i = 2;i <= sqrt(1000002.0); ++i)  
    {  
        if(!prime[i])  
            for(j = i * i; j < 1000002; j += i)  
                prime[j] = 1;  
    }  
    j = 0;  
    for(i = 2;i <= 1000002; ++i)  
        if(!prime[i])   
            prime[j++] = i;  
}  
原文地址:https://www.cnblogs.com/1114250779boke/p/2646681.html