int
m =
sqrt
(n+0.5);
memset
(vis,0,
sizeof
(vis));
for
(
int
i = 2; i <= m; i++)
{
if
(!vis[i])
{
for
(
int
j = i*i; j <= n; j += i)
{
vis[j] = 1;
}
}
}
版本二O(nloglogn)
int
p = 0;
memset
(is_prime,
true
,
sizeof
(is_prime));
is_prime[0] = is_prime[1] =
false
;
for
(
int
i = 2; i <= MAX; i++)
{
if
(is_prime[i])
{
prime[p++] = i;
for
(
int
j = 2 * i; j <= MAX; j += i)
{
is_prime[j] =
false
;
}
}
}