给定一个数N,得到N以内的所有素数,可以利用素数筛法来做,代码如下:
#include <iostream>
#include <cstdio>
#include <vector>
#include <cmath>
using namespace std;
vector<int> sievePrimes(int n){
vector<int> result;
vector<bool> flag(n+1, true);
flag[0] = flag[1] = false;
const int high = sqrt(n);
for(int i = 2; i <= high; ++i){
if(flag[i]){
for(int j = i*i; j <= n; j += i){
flag[j] = false;
}
}
}
for(int i = 2; i <= n; ++i){
if(flag[i]) result.push_back(i);
}
return result;
}
int main(){
int n;
while(cin >> n){
vector<int> primes = sievePrimes(n);
for(auto prime : primes){
cout << prime << " ";
}
}
return 0;
}