AcWing 868. 筛质数
原题链接
简单
作者:
噗呲噗呲
,
2020-04-06 18:54:04
,
所有人可见
,
阅读 525
朴素筛法求素数
// 朴素筛法求素数
#include <iostream>
using namespace std;
const int N = 1000010;
int n;
int primes[N],cnt;
int st[N];
void primees(int x){
for(int i = 2; i <= n; i ++){
if(st[i]) continue;
primes[cnt++] = i;
for(int j = i * 2; j <= n; j += i){
st[j] = true;
}
}
}
int main(){
cin >> n;
primees(n);
for(int i = 0; i <= 20; i ++){
cout << primes[i] << ' ' << endl;
}
return 0;
}
线性筛素数
// 线性筛素数
#include <iostream>
using namespace std;
const int N = 1000010;
int primes[N],cnt;
bool st[N];
int n;
void primees(int x){
for(int i = 2; i <= x; i++){
if(!st[i]) primes[cnt ++] = i;
for(int j = 0; primes[j] <= x / i; j ++){
st[primes[j] * i] = true;
if(i % primes[j] == 0) break;
}
}
}
int main(){
cin >> n;
primees(n);
cout << cnt << endl;
return 0;
}