C++面向对象:筛选取法实现2~200间素数查找
需积分: 18 177 浏览量
更新于2024-08-24
收藏 8.65MB PPT 举报
本资源是一份关于C++面向对象编程的课件,主要关注如何使用筛选法求解2至200之间的所有素数。筛选法,又称埃拉托斯特尼筛法,是一种古老且高效的算法,用于找出一个范围内所有素数的方法。在这个示例中,程序首先创建一个数组,将1到200的所有数字初始化为1(因为最初都假设是素数)。然后,从2开始,依次将它的倍数标记为非素数,即置零。这个过程会重复,每次增加一个已知的素数,如3、5、7等,直到筛选出所有的素数。
具体步骤如下:
1. 首先,创建一个大小为200的数组,代表2到200的整数。
2. 从2开始,遍历数组,如果当前数i是素数(即未被标记为非素数),则执行以下操作:
- 将i的倍数(i * i到200)设为0,表示它们不是素数。
3. 当遍历到某个数的平方大于200时,筛选过程结束,因为之后的数无法再是2到200范围内的素数。
4. 最后,数组中未被标记为0的元素就是2到200之间的素数。
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<int>& primes) {
std::vector<bool> isComposite(n+1, true); // 假设所有数都是合数
for (int i = 2; i * i <= n; i++) {
if (isComposite[i]) {
for (int j = i * i; j <= n; j += i) {
isComposite[j] = false; // 如果i的倍数是合数,则标记为非素数
}
}
}
// 将素数添加到结果向量
for (int i = 2; i <= n; i++) {
if (isComposite[i]) primes.push_back(i);
}
}
int main() {
int limit = 200;
std::vector<int> primeNumbers;
sieveOfEratosthenes(limit, primeNumbers);
std::cout << "2到" << limit << "之间的素数有:";
for (const auto& prime : primeNumbers) {
std::cout << prime << " ";
}
return 0;
}
```
这段代码展示了如何在C++中实现筛选法来寻找素数,同时也体现了C++语言的优势,如简洁的语法、强大的数据处理能力和良好的可移植性。然而,正如课件所述,C++的语法结构相对宽松,对于初学者来说需要一定时间去理解和熟练运用,包括理解循环、条件语句以及调试技巧。同时,课件也提到了C++语言的发展历程,从BCPL到C再到C++,反映了计算机程序设计语言的不断演进和优化。
10406 浏览量
1407 浏览量
2943 浏览量
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
121 浏览量
深夜冒泡
- 粉丝: 19
- 资源: 2万+
最新资源
- chat-app-master
- MAST-MOBILE:MAST Android应用程序源代码-Android application source code
- nanodegree-p3-classic-arcade-game:nanodegree-p3-classic-arcade-game
- Just_Java-app:这是我的第一拳Android项目,通过该项目,我通过Just Java应用程序了解了android的各种基础知识
- SIXSIGMA六标准差——教练级黑带师、黑带、绿带培训方案
- 数据营项目
- tool-conventions:支持使用WebAssembly的工具之间的互操作性的约定
- learn-bootstrap:这个 repo 是为我创建的,用于通过 tutorialls 学习引导程序
- FitJournal:Fit Journal应用程序的源代码-Android application source code
- 计时器
- 金融筹资管理
- thunderboard-android:这是Android的Thunderboard应用程序的源代码-Android application source code
- 网址缩短API登陆页面
- silverstripe-email_reminder:Silverstripe CMS的模块。 在用户的成员资格(或类似权限)即将到期时向用户发送提醒
- nodeschool.io:我对 NodeSchool.io 练习的解决方案
- ASCII-ART:产生与图像相对应的ASCII符号