当前位置: 首页 > news >正文

【C++练习】06.输出100以内的所有素数

目录

  • 输出100以内的所有素数
    • 方法1:基础判断法
    • 方法2:埃拉托斯特尼筛法(效率更高)
    • 方法3:优化版筛法(只考虑奇数)
    • 方法4:使用STL算法
    • 方法5:递归实现
    • 总结:

输出100以内的所有素数

方法1:基础判断法

#include <iostream>
using namespace std;bool isPrime(int n) {if (n <= 1) return false;for (int i = 2; i * i <= n; i++) {if (n % i == 0) return false;}return true;
}int main() {for (int i = 2; i <= 100; i++) {if (isPrime(i)) {cout << i << " ";}}return 0;
}

方法2:埃拉托斯特尼筛法(效率更高)

#include <iostream>
#include <vector>
using namespace std;void sieveOfEratosthenes(int n) {vector<bool> prime(n + 1, true);prime[0] = prime[1] = false;for (int p = 2; p * p <= n; p++) {if (prime[p]) {for (int i = p * p; i <= n; i += p) {prime[i] = false;}}}for (int p = 2; p <= n; p++) {if (prime[p]) {cout << p << " ";}}
}int main() {sieveOfEratosthenes(100);return 0;
}

方法3:优化版筛法(只考虑奇数)

#include <iostream>
#include <vector>
using namespace std;void optimizedSieve(int n) {if (n >= 2) cout << "2 ";int size = (n - 1) / 2;vector<bool> prime(size, true);for (int i = 0; i < size; i++) {if (prime[i]) {int p = 2 * i + 3;cout << p << " ";for (int j = p * p; j <= n; j += 2 * p) {prime[(j - 3) / 2] = false;}}}
}int main() {optimizedSieve(100);return 0;
}

方法4:使用STL算法

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;bool isPrime(int n) {if (n <= 1) return false;for (int i = 2; i * i <= n; i++) {if (n % i == 0) return false;}return true;
}int main() {vector<int> numbers(99);iota(numbers.begin(), numbers.end(), 2);numbers.erase(remove_if(numbers.begin(), numbers.end(), [](int n) { return !isPrime(n); }),numbers.end());for (int n : numbers) {cout << n << " ";}return 0;
}

方法5:递归实现

#include <iostream>
using namespace std;bool isPrime(int n, int i = 2) {if (n <= 2) return (n == 2);if (n % i == 0) return false;if (i * i > n) return true;return isPrime(n, i + 1);
}int main() {for (int i = 2; i <= 100; i++) {if (isPrime(i)) {cout << i << " ";}}return 0;
}

总结:

  • 基础判断法简单直观,适合小范围素数判断
  • 筛法在大数据量时效率更高
  • STL版本展示了C++标准库的使用
  • 递归版本展示了另一种思维方式

输出结果都是100以内的素数:

2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97

文章转载自:

http://4AVHtVJF.wxfgg.cn
http://rX0rmitz.wxfgg.cn
http://GgRgOW5N.wxfgg.cn
http://EMd4kAeW.wxfgg.cn
http://Hj7TFQhV.wxfgg.cn
http://izyZJFNF.wxfgg.cn
http://JpJNmvzy.wxfgg.cn
http://dNhubDcC.wxfgg.cn
http://8J0jSzCw.wxfgg.cn
http://zbORR3qF.wxfgg.cn
http://Sy9jnggo.wxfgg.cn
http://fsVjkjVF.wxfgg.cn
http://M5syQx4S.wxfgg.cn
http://swOvUOOs.wxfgg.cn
http://caOXskzs.wxfgg.cn
http://8kcKDg98.wxfgg.cn
http://3OErAZDH.wxfgg.cn
http://624k2gy6.wxfgg.cn
http://4EHOsPMi.wxfgg.cn
http://uoZyHhrW.wxfgg.cn
http://eKWfHA7q.wxfgg.cn
http://1M7lDNpX.wxfgg.cn
http://esDYU2Vt.wxfgg.cn
http://vg3gXPaQ.wxfgg.cn
http://g1CmM8Y8.wxfgg.cn
http://spyciSyO.wxfgg.cn
http://B3PnHZ6w.wxfgg.cn
http://G6ngiOpO.wxfgg.cn
http://qjULoPET.wxfgg.cn
http://lTOyVBww.wxfgg.cn
http://www.dtcms.com/a/366194.html

相关文章:

  • 结合prompt源码分析NodeRAG的build过程
  • 【C++闯关笔记】STL:list 的学习和使用
  • 解密大语言模型推理:Prompt Processing 的内存管理与计算优化
  • Redis vs Memcached vs MongoDB:深入对比与选型指南
  • C# 修改基类List中某一元素的子类类型
  • 如何在 iPhone 或 iPad 上删除文件
  • MongoDB 高可用部署:Replica Set 搭建与故障转移测试
  • MacOS微信双开,亲测有效
  • MySQL事务的四大特性(ACID)
  • 数说故事 | 2025年运动相机数据报告,深挖主流品牌运营策略及行业趋势​
  • K8S容器POD内存快照导出分析处理方案
  • 【面试题】Prompt是如何生成的,优化目标是什么,任务是什么?
  • Elasticsearch 备份和恢复
  • 软考中级习题与解答——第二章_程序语言与语言处理程序(2)
  • RTC实时时钟RX8025SA国产替代FRTC8025S
  • git基础命令 git基础操作
  • 2025市面上比较实用的财会行业证书,最值得考的8个职业证书推荐
  • 开源与定制化直播电商系统源码对比:如何选择开发方案?
  • Spring 事务提交成功后执行额外逻辑
  • Attention-Based Map Encoding for Learning Generalized Legged Locomotion
  • MMD动画(二)动作制作
  • Hoppscotch:开源轻量API测试工具,秒启动高效解决临时接口测试需求
  • 【机器学习】HanLP+Weka+Java算法模型
  • 算法随笔(一)
  • Electron 执行python脚本
  • Dubbo(分布式RPC调用和分布式文件储存)
  • 如何简单理解状态机、流程图和时序图
  • 成为一个年薪30W+的FPGA工程师是一种什么体验?
  • 进程与线程详解, IPC通信与RPC通信对比,Linux前台与后台作业
  • 在国企干了 5 年 Java,居然不知道 RPC?这正常吗?