[迁移]线性筛法——欧拉筛

代码如下,时间复杂度为O(n)

int prime[maxn],num=0;
int visit[maxn];
//we should initiate all above to 0
void FindPrime()
{
    for (int i = 2; i <= maxn; i++)
    {
        if (!visit[i])
        {
            prime[++num] = i; //record this prime, num is used as counter
        }
        for (int j = 1; j <= num && i * prime[j] <= maxn; j++)
        {
            visit[i * prime[j]] = 1;
            if (i % prime[j] == 0)
                break;
        }
    }
}
posted @ 2021-07-29 16:19  CharlesHo  阅读(38)  评论(0)    收藏  举报