1 void daa()
2 {
3 int k=0;
4 for(int i=2;i<100000;i++)
5 {
6 if(x[i]==0)
7 {
8 prime[k]=i;
9 for(int j=i*2; j<100000; j+=i)
10 x[j]=1;
11 k++;
12 }
13 }
14 }
View Code
//黑历史不忍卒睹
const int N = 1e6 + 10;
int prime[N];
int cnt = 0;
//O(n*loglogn)
void pri()
{
memset(vis, 0, sizeof(vis));
for(int i = 2; i < N; i++)
{
if(!vis[i])
{
for(int j = i + i; j < N; j += i)
if(!vis[j])
vis[j] = 1;
prime[cnt++] = i;
}
}
}
//O(n)
void Sieve()
{
memset(vis, 0, sizeof(vis));
for(int i=2;i<N;i++)
{
if(!vis[i])
prime[cnt++]=i;
for(int j = 0; j < cnt && i * prime[j] < N; j++)
{
vis[i * prime[j]] = 1;
if(0 == (i % prime[j]))
break;
}
}
}