C++实现筛选法求2~200间素数
下载需积分: 17 | PPT格式 | 8.82MB |
更新于2024-08-19
| 97 浏览量 | 举报
在C++编程领域,"用筛选取法求出2~200之间的所有素数"是一个经典的问题,它涉及到算法设计和基础数学概念。筛选法,也称为埃拉托斯特尼筛法,是一种古老且高效的寻找素数序列的方法。这种方法的核心思想是从最小的质数2开始,将它的所有倍数标记为合数(非素数),然后移动到下一个未被标记的数,即下一个质数,重复这个过程,直到达到指定范围的上限。
以下是如何在C++中实现这个筛选取法的过程:
```cpp
#include <iostream>
#include <vector>
bool isPrime(int num) {
if (num <= 1) {
return false;
}
for (int i = 2; i * i <= num; ++i) {
if (num % i == 0) {
return false;
}
}
return true;
}
void sieveOfEratosthenes(int n) {
std::vector<bool> primes(n+1, true); // 初始化一个布尔数组,所有数默认为质数
primes[0] = primes[1] = false; // 0和1不是质数
for (int i = 2; i * i <= n; ++i) {
if (primes[i]) { // 如果i是质数
for (int j = i * i; j <= n; j += i) {
primes[j] = false; // 将i的所有倍数标记为合数
}
}
}
for (int i = 2; i <= n; ++i) {
if (primes[i]) {
std::cout << i << " ";
}
}
}
int main() {
int limit = 200;
sieveOfEratosthenes(limit);
return 0;
}
```
在这个C++代码中,`isPrime`函数用于检查一个数是否为质数,`sieveOfEratosthenes`函数则是筛选法的实现,它使用一个布尔数组`primes`记录每个数是否为素数。通过循环遍历数组,将所有非质数的倍数标记为`false`,最后输出所有标记为`true`的数,即为2到200之间的素数。
通过这个示例,学习者不仅可以掌握C++编程的基本语法,如变量声明、条件判断、循环结构等,还能理解算法设计中的优化策略,以及如何处理大范围数据的有效性和内存管理。同时,这也展示了C++语言结构化、灵活和高效的特点,使得它在解决这类问题时表现出色。
相关推荐
![filetype](https://img-home.csdnimg.cn/images/20241231044955.png)
![filetype](https://img-home.csdnimg.cn/images/20241231045053.png)
![filetype](https://img-home.csdnimg.cn/images/20250102104920.png)
![filetype](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![filetype](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![filetype](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![filetype](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![filetype](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![filetype](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/default.jpg!1)
八亿中产
- 粉丝: 28
最新资源
- MATLAB实现K-means算法的参考程序
- 编码实践:数据结构在Python中的应用
- C# 2010 编程指南 - 掌握Windows开发
- 掌握LabVIEW本地化语言包:lce_installer_101使用指南
- 微信小程序图书管理系统的实现与图书查询
- 全能文件批量改名工具:替换与删除功能
- 掌握Markdown与Jekyll:构建GitHub Pages网站指南
- PDF转图片工具:多种格式转换支持
- Laravel开发入门:轻松实现Stripe订阅计费管理
- Xshell-6.0.0107p: 强大的远程终端控制软件免注册版
- 亚洲人脸识别优化的FaceNet pb模型发布
- 2016年研究生数学建模竞赛解析
- xproc:便捷跨平台命令行资源检查与管理工具
- LPC1769兼容的ADV7179驱动编程实现
- Matlab统计分析工具开发详解
- PyQt5 Python GUI编程实践指南