const int N = 1e6 + 10;
bool prime[N];
int p[N], tot, num[N];
void init()
{
tot = 0;
clr(prime, true);
for(int i = 2; i < N; i++)
{
if(prime[i])
p[tot++] = i;
for(int j = 0; j < tot && i * p[j] < N; j++)
{
prime[i * p[j]] = false;
if(i % p[j] == 0)
break;
}
}
clr(num, 0);
for(int i = 2; i < N; i++)
{
num[i] = num[i - 1];
if(prime[i])
num[i]++;
}
}
【Eular质数筛】
最新推荐文章于 2021-05-20 18:56:55 发布