筛选法求素数

筛选法求素数,不断的用3,5,7,等素数作为筛子,筛除这些数的倍数,即将合数筛除。用辅助数组p记录数i是否是素数。

vector<int> prime(int n)
{
    vector<int> p(n+1);
    for(int i=2;i<=n;i++)
    {
        if(i%2==0&&i>2)
            p[i]=0;
        else
            p[i]=1;
    }
    for(int i=3;i<=(int)(sqrt((double)n));i+=2)
    {
        if(p[i])
        for(int j=i*i;j<=n;j+=i)
            p[j]=0;
    }
    return p;
}

 

posted @ 2016-10-15 20:57 beaglebone 阅读(...) 评论(...) 编辑 收藏