0%

线性筛素数

线性筛(欧拉筛)

原理:每个数都被其最小的质因数筛掉

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include<bits/stdc++.h>
using namespace std;

vector<int> prime;
bool mmap[100000001];

bool isPrime(int a)
{
for(int i=2;i<=a;i++)
{
if(mmap[i]==false)
{
prime.push_back(i);
}
for(int j : prime)
{
if(j*i>a) break;
mmap[i*j]=true;
if(i%j==0) break;
}
}
return mmap[a];
}

int main()
{
int n;
cin>>n;
cout<<!isPrime(n);
return 0;
}