dev c++线性筛
时间: 2023-11-14 12:10:48 浏览: 157
线性筛是一种用于求解素数的算法,它可以在O(n)的时间复杂度内求出n以内的所有素数。Dev C++是一个集成开发环境,可以用来编写和调试C++程序。因此,我们可以使用Dev C++来实现线性筛算法。
在Dev C++中实现线性筛算法的步骤如下:
1. 创建一个新的C++项目。
2. 在项目中创建一个新的源文件。
3. 在源文件中编写线性筛算法的代码。
4. 编译并运行程序。
具体的代码实现可以参考以下步骤:
1. 首先,我们需要定义一个数组来存储素数。由于线性筛算法是从小到大依次筛选素数,因此我们可以使用一个布尔类型的数组来表示每个数是否为素数。
2. 然后,我们需要使用一个循环来遍历2到n之间的所有数,将所有素数的倍数标记为非素数。
3. 最后,我们可以使用一个循环来输出所有素数。
下面是一个简单的Dev C++线性筛实现的代码示例:
```
#include <iostream>
using namespace std;
const int MAXN = 1000000;
bool isPrime[MAXN + 1];
int prime[MAXN + 1], cnt = 0;
void linearSieve(int n) {
for (int i = 2; i <= n; i++) {
if (!isPrime[i]) prime[++cnt] = i;
for (int j = 1; j <= cnt && i * prime[j] <= n; j++) {
isPrime[i * prime[j]] = true;
if (i % prime[j] == 0) break;
}
}
}
int main() {
int n;
cin >> n;
linearSieve(n);
for (int i = 1; i <= cnt; i++) {
cout << prime[i] << " ";
}
return 0;
}
```
阅读全文