内容纲要
int prime[maxn];
bool is_prime[maxn];

int init()
{
    memset(is_prime,true,sizeof(is_prime));
    int cnt = 0;
    for (int i = 2;i <= 1000000;i++)
    {
        if (is_prime[i])    //如果是素数
            prime[cnt++] = i;   //记录在数组中
        for (int j = 0; j < cnt; j++)
        {
            if (i * prime[j] > maxn) //判断是否越界
                break; // 过大的时候跳出
            is_prime[i * prime[j]] = false; //如果check[i*prime[j]]是已知素数的整数倍那一定是合数
            if ((i % prime[j]) == 0) // 如果i是一个合数,而且i % prime[j] == 0
                break;
        }
    }
    is_prime[1] = false;
    return cnt;
}

发表评论

电子邮件地址不会被公开。 必填项已用*标注