0
点赞
收藏
分享

微信扫一扫

素数筛法


高效找出2-n之间的所有素数。

#include <iostream>
#include <vector>
#include <cmath>
using namespace std;

int n = 1000000;
void PrimeSelect(vector<int> &prime, vector<bool> &mark) {
for (int i = 2; i <= n; i++) {
if (mark[i] == true) {
continue;
}
prime.push_back(i);
if (i > sqrt(n)) {
continue;
}
for (int j = i * i; j <= n; j += i) {
mark[j] = true;
}
}
}

int main() {
vector<int> prime;
vector<bool> mark(n + 1, false);
PrimeSelect(prime, mark);
for (int i = 0; i < prime.size(); i++) {
cout << prime[i] << " ";
}
cout << endl;
return 0;
}

 


 

举报

相关推荐

0 条评论