[迁移]线性筛法——欧拉筛
代码如下,时间复杂度为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;
}
}
}

浙公网安备 33010602011771号