素数打表

一、打一张存储MAXN以内的所有素数的表:

 

int prime2[MAXN];    //用于存储每个素数
bool prime(int x)   //判断是否为素数
{
    for(int i = 2; i*i <= x; i++)
        if(x % i == 0)
            return false;
    return true;
}
void GetPrime2()   //打素数表
{
    int cnt = 0;
    for(int i =2; i <= MAXN; i++)
        if(prime(i))
            prime2[cnt++] = i;
}

二、筛法求素数,每个位置用于记录是否为素数

bool prime1[MAXN];  //保存是否为素数的状态,是则为true,否则为false
void GetPrime1()   //筛法求素数
{
    memset(prime1, true, sizeof(prime1));
    prime1[0] = prime1[1] = false;
    for(int i = 2; i <= MAXN; i++)
    {
        if(prime1[i])
        {
            for(int j = 2*i; j <= MAXN; j+=i)
                prime1[j] = false;
        }
    }
}

 

posted @ 2013-09-23 00:39  Sign_  阅读(356)  评论(0编辑  收藏  举报