c++ n以内质数
时间: 2023-07-01 08:14:08 浏览: 112
好的,以下是使用埃氏筛法实现的C++代码:
```c++
#include <iostream>
#include <vector>
using namespace std;
vector<int> find_primes(int n) {
vector<bool> isPrime(n+1, true);
isPrime[0] = isPrime[1] = false;
for (int i = 2; i <= n; ++i) {
if (isPrime[i]) {
for (int j = i*i; j <= n; j += i) {
isPrime[j] = false;
}
}
}
vector<int> primes;
for (int i = 2; i <= n; ++i) {
if (isPrime[i]) primes.push_back(i);
}
return primes;
}
int main() {
int n;
cin >> n;
vector<int> primes = find_primes(n);
for (int prime : primes) {
cout << prime << " ";
}
cout << endl;
return 0;
}
```
输入一个整数n,输出小于等于n的所有质数。该算法的时间复杂度为O(nloglogn),空间复杂度为O(n)。可以通过使用bitset来进一步减小空间复杂度。
阅读全文