【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://www.pswp.cn/news/921369.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/921369.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在开发中使用git rebase的场景

rebase介绍 一、背景 远程仓库有oh4w-dev和oh4k-dev两个分支&#xff0c;oh4k-dev是基于oh4w-dev开发到80%的代码新拉的分支&#xff1b;此后两条分支同步开发&#xff0c;当oh4k-dev开发完成&#xff0c;oh4w-dev还在开发阶段&#xff0c;oh4k-dev需要拉取到oh4w-dev自分出o…

TDengine 时序函数 NOW() 用户手册

TDengine NOW() 函数用户使用手册 目录 功能概述函数语法返回值说明技术特性使用场景及示例时间运算操作注意事项常见问题 功能概述 NOW() 函数是 TDengine 中的时间函数&#xff0c;用于获取客户端当前系统时间。该函数在时序数据库中特别有用&#xff0c;可以用于数据插入…

JavaWeb ——事务管理

文章目录事务管理事务回顾Spring事务管理事务进阶事务属性 - 回滚 rollbackFor事务属性 - 传播行为 propagationSpring框架第一大核心: IOC控制反转&#xff0c; 其第二大核心就是 AOP 面向切面编程 事务管理 事务回顾 Spring事务管理 # spring 事务管理日志 logging:level:org…

【跨国数仓迁移最佳实践8】MaxCompute Streaming Insert: 大数据数据流写业务迁移的实践与突破

本系列文章将围绕东南亚头部科技集团的真实迁移历程展开&#xff0c;逐步拆解 BigQuery 迁移至 MaxCompute 过程中的关键挑战与技术创新。本篇为第八篇&#xff0c;MaxCompute Streaming Insert&#xff1a; 大数据数据流写业务迁移的实践与突破。注&#xff1a;客户背景为东南…

2025-09-05 CSS4——浮动与定位

文章目录1 显示&#xff08;Display&#xff09;1.1 visibility:hidden1.2 display:none2 块和内联元素2.1 块元素2.2 内联元素2.3 改变元素的显示方式3 浮动&#xff08;Float&#xff09;3.1 float 属性3.2 clear 属性4 定位&#xff08;Position&#xff09;4.1 五种定位模式…

43这周打卡——生成手势图像 (可控制生成)

目录 前言 1.导入数据及数据可视化 2.构建模型 3.训练模型 4.模型分析并生成指定图像 总结 前言 &#x1f368; 本文为&#x1f517;365天深度学习训练营中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 1.导入数据及数据可视化 from torchvision import data…

TDengine 时间函数 TIMEDIFF() 用户手册

TDengine TIMEDIFF() 函数详细使用手册 目录 功能概述函数语法参数说明返回值说明版本变更说明技术特性使用场景及示例时间单位处理数据类型兼容性注意事项常见问题最佳实践 功能概述 TIMEDIFF() 函数用于计算两个时间戳的差值&#xff0c;返回 expr1 - expr2 的结果。结果…

【2025ICCV-持续学习方向】一种用于提示持续学习(Prompt-based Continual Learning, PCL)的新方法

1. 背景与问题 (Background & Problem):​​ ​持续学习 (CL):​​ 目标是在不遗忘旧任务知识的情况下,让模型持续学习一系列新任务。主要挑战是灾难性遗忘。 ​基于提示的持续学习 (PCL):​​ 利用预训练视觉Transformer (ViT),冻结其权重,通过微调称为“提示”(prompt…

2025 年 08 月 GitHub 十大热门项目排行榜

欢迎来到 2025 年 8 月 GitHub 热门开源项目排行榜&#xff01;本月榜单集中展示了来自智能体平台、AI 编程助手、多模态角色系统、本地化部署工具到可视化白板与企业协同平台的多元创新。从构建 AI 助手中枢的 Archon&#xff0c;到终端 AI 编码拍档 Crush&#xff0c;再到虚拟…

LeetCode每日一题,2025-9-4

多数元素 投票法 让你找到序列中出现超过二分之一的元素&#xff0c;一定要记住这个规则。 记录两个值val和cnt&#xff0c;刚开始val为任意数&#xff0c;cnt0。 如果cnt是0&#xff0c;就把当前val num。接下来判断&#xff0c;ifnum val&#xff0c;则cnt &#xff0c;e…

第7章 安全配置

7.1 安全概述 Jenkins安全威胁 常见安全风险&#xff1a; 访问控制风险&#xff1a; - 未授权访问Jenkins实例 - 权限提升攻击 - 横向移动攻击 - 敏感信息泄露代码执行风险&#xff1a; - 恶意脚本注入 - 构建脚本篡改 - 插件漏洞利用 - 远程代码执行数据安全风险&#xff1a; …

腾讯混元世界模型Voyager开源:单图生成3D世界的“核弹级”突破,游戏、VR、自动驾驶迎来新变量

当AI绘画、视频生成技术逐渐从“新鲜感”走向“实用化”&#xff0c;3D内容生成却始终卡在“效率低、成本高、门槛高”的瓶颈里。传统3D建模需要专业软件、大量人工调整&#xff0c;甚至依赖昂贵的硬件设备&#xff0c;让中小团队和个人创作者望而却步。 但腾讯AI实验室最近开…

数据库(基础操作)

SQL 结构化的查询语句 我们现在需要写SQL语句 --- 这个玩意儿就是数据库的操作语句我们的数据库就类似于一个excl表格它有n列&#xff0c;每一列为一个大类&#xff0c;数据以行存在&#xff0c;一行代表一个条目数据如&#xff1a;我现在想建立一个数据库保存学生的信息你需要…

linux ubi文件系统

1&#xff0c;UBI&#xff08;Unsorted Block Images&#xff09;是 Linux 内核中为原始 Flash 设备提供的一种抽象层&#xff0c;位于 MTD&#xff08;Memory Technology Device&#xff09;和文件系统&#xff08;如 UBIFS&#xff09;之间。它负责坏块管理、磨损均衡、逻辑卷…

深度厚金板PCB与厚铜PCB的区别

厚金板PCB和厚铜PCB在电子制造领域都有重要应用&#xff0c;它们有着不同的特点和适用场景。下面为你详细介绍二者的区别。厚金PCB是什么厚金PCB是在印制电路板表面镀上较厚金层的电路板。这层厚金能提升电路板的导电性、抗氧化性和耐磨性。在一些对信号传输要求极高、使用环境…

一阶低通滤波器应用示例(演示)

1. 代码 这段代码实现了一个一阶低通滤波器&#xff08;也称为指数加权移动平均滤波器&#xff09;。它适用于需要平滑数据、减少噪声的场合。以下是一些常见的应用场景&#xff1a; 传感器数据平滑&#xff1a;在嵌入式系统或物联网设备中&#xff0c;传感器&#xff08;如温度…

RT-Thread源码分析字节实现socket源码

无论是客户端还是服务器程序&#xff0c;发送的底层都是发送AT指令&#xff1a;1&#xff09;发送命令到串口&#xff1b;2&#xff09;阻塞等待返回结果接收的底层都是1&#xff09;阻塞等待&#xff1b;2&#xff09;被唤醒后拷贝处理数据两者均由后台任务唤醒&#xff0c;后…

keil 5 STM32工程介绍

目录 一、工程文件介绍 1.自动生成的文件 2.自建文件 &#xff08;1&#xff09;USER 文件夹 &#xff08;2&#xff09;FWLIB 文件夹 &#xff08;3&#xff09;CMSIS 文件夹 二、工程创建教程 1.下载固件库 2.创建工程 &#xff08;1&#xff09;创建不完善的工程 …

AI大模型如何重塑日常?从智能办公到生活服务的5个核心改变

AI大模型重塑日常&#xff1a;从智能办公到生活服务的5个核心改变一、引言• 简述AI大模型技术的快速发展背景&#xff0c;说明其已从技术领域逐步渗透到大众日常生活• 提出核心观点&#xff1a;AI大模型正从办公和生活服务两大场景&#xff0c;深度改变人们的行为模式与…

迈威通信从送快递角度教你分清网络二层和三层

还在为网络里的二层、三层概念头大?其实就像送快递那么简单!今天迈威通信用最接地气的方式给你讲明白&#xff5e;网络传输 送快递?没错!二层网络&#xff1a;本地送货员负责同小区的包裹配送(局域网传输)&#xff0c;就像小区里的快递站(对应设备&#xff1a;交换机)&#…