寻找素数——编程中的数学魔法

发布时间:2026/9/8 14:23:11

寻找素数——编程中的数学魔法
目录引言代码分析优化技巧奇数优化除数优化根号优化优化后的代码结论引言在计算机编程中有时候我们需要处理一些特殊的数字例如素数。素数是自然数中大于1且只能整除自身和1的数字它们有着许多有趣的性质和应用。本文将介绍如何使用 C 语言编写一个简单的程序来寻找指定范围内的素数并且使用优化技巧提升算法效率。代码分析让我们先来看一下代码#include stdio.h #include stdbool.h #include math.h #include time.h int main() { int max 0; scanf(%d, max); // add code below int count 0; for (int number 2; number max; number) { // decide whether number is a prime bool is_prime true; for (int i 2; i * i number; i) { if (number % i 0) { is_prime false; break; } } if (is_prime) { count; printf(%d , number); } } printf(\ncount %d\n, count); return 0; }这段代码的功能是在用户输入的范围内寻找素数然后输出这些素数以及素数的个数。代码使用了一个嵌套的循环结构外层循环用来遍历指定范围内的数字内层循环用来判断一个数字是否为素数。在内层循环中我们使用了一个简单的算法来判断一个数字是否为素数。我们从2开始一直判断到这个数的平方根如果在这个范围内存在可以整除它的数字则它不是素数否则它是素数。如果一个数字被证明不是素数则内其次在内层循环中我们可以进一步优化除数的选择。最小的素数是2然后是3、5、7等它们之间没有其他素数。可以看出除了2以外的素数一定是奇数。因此我们可以只使用奇数作为除数跳过偶数除数来进一步减少迭代次数。层循环会立即中断继续遍历下一个数字。优化技巧虽然上述代码可以正确地找出指定范围内的素数但它的效率并不高。随着范围增大内层循环的迭代次数也会相应增加导致程序运行时间变长。我们可以使用一些数学的优化技巧来改进算法效率。奇数优化首先我们可以注意到素数除了2以外都是奇数。因此我们可以在外层循环中只处理奇数将步长设置为2。这样就能减少循环次数一半提升效率。除数优化其次在内层循环中我们可以进一步优化除数的选择。最小的素数是2然后是3、5、7等它们之间没有其他素数。可以看出除了2以外的素数一定是奇数。因此我们可以只使用奇数作为除数跳过偶数除数来进一步减少迭代次数。根号优化另一个优化的思路是通过观察我们可以发现一个数字的最大可能因子是它的平方根。因此在内层循环中我们只需要判断到数字的平方根就可以了而不需要一直迭代到该数字本身。优化后的代码考虑到上述的优化技巧我们可以改进原始代码得到如下更高效的代码#include stdio.h #include stdbool.h #include math.h #include time.h int main() { int max 0; scanf(%d, max); // add code below int count 0; if (max 2) { printf(2 ); count; } for (int number 3; number max; number 2) { // decide whether number is a prime bool is_prime true; int sqrt_number (int)sqrt(number); for (int i 3; i sqrt_number; i 2) { if (number % i 0) { is_prime false; break; } } if (is_prime) { count; printf(%d , number); } } printf(\ncount %d\n, count); return 0; }如上代码所示我们对外层循环和内层循环进行了优化。我们将外层循环的初始值设置为3并且每次增加2从而只遍历奇数。在内层循环中我们使用了一个整数的平方根作为判断的上限并且每次增加2来选择奇数作为除数。这样的优化使得算法的运行速度更快尤其是在大范围内寻找素数时。结论通过本文的介绍我们学习了如何使用 C 语言编写一个寻找素数的程序并且优化了算法来提升程序的效率。寻找素数是一个有趣的数学问题在编程中使用优化算法解决这类问题既具有挑战性又可以培养我们的思维能力。希望本文对读者有所启发让你对编程中的数学技巧有更深入的理解和应用。如果你对这个主题感兴趣可以深入研究更高级的算法和数学方法进一步提升你的编程技巧。谢谢阅读

相关新闻

使用冒泡排序算法对一百万个数字进行排序

使用冒泡排序算法对一百万个数字进行排序

2026/9/8 14:23:11

目录 1. 引言 2. 代码解析 运行结果 3. 拓展内容 4. 总结 1. 引言 排序是计算机科学中常见的问题,在实际应用中经常需要对一系列数据进行排序。冒泡排序是最简单的排序算法之一,尽管效率较低,但它易于理解和实现。本文将介绍一个使用冒泡…

QQ插件版生态全解析:从机器人到浏览器扩展的实用工具链

QQ插件版生态全解析:从机器人到浏览器扩展的实用工具链

2026/9/8 14:23:11

提到“QQ插件版”,很多人第一反应是那些来路不明的“美化版QQ安装包”,但在我折腾了十多年QQ生态之后,想认真说一句:围绕QQ的周边工具,远远不止改皮肤、换主题这么简单。从空间数据备份、机器人自动化,到浏…

探讨年龄与体能素质的关系及个人观点

探讨年龄与体能素质的关系及个人观点

2026/9/8 14:23:11

导语:近年来,一些大厂在裁员过程中声称35岁以后的员工体能下滑,无法高效率地完成工作。然而,年龄对于体能素质的影响并非唯一决定因素。本文将从科学角度探讨年龄与体能素质的关系,并分享个人观点,希望能对…

零基础写论文✅全程不用求人!思梦航 AI 保姆级全流程教程

零基础写论文✅全程不用求人!思梦航 AI 保姆级全流程教程

2026/9/8 15:23:13

很多本科生在校期间并没有系统学习过论文写作😭。不会定选题、搜集文献犯难、降重一头雾水,格式调不好,答辩不知道怎么应答,全程自己瞎摸索,稿子反复被导师打回修改。 其实本科毕业论文不用闭门硬啃。找对合适的辅助工…

答辩不会❌思梦航 AI 万能应答话术|导师提问直接拿高分

答辩不会❌思梦航 AI 万能应答话术|导师提问直接拿高分

2026/9/8 15:23:13

不少同学 PPT 做得精致、论文内容也过关,但一遇上导师现场提问直接翻车。临场紧张卡顿、答非所问,越解释逻辑越乱。明明论文本身没有大问题,却因为临场表达被压低分数,实在很吃亏😭 本科答辩并不考察高深科研水平&…

论文定稿后还有隐形扣分点|思梦航 AI 定稿全校验,避开那些容易忽略的细节

论文定稿后还有隐形扣分点|思梦航 AI 定稿全校验,避开那些容易忽略的细节

2026/9/8 15:23:13

很多同学存在一个误区:论文写完、查重达标,就万事大吉坐等答辩。 现实里不少本科毕业论文,栽在定稿收尾环节。正文逻辑没问题、重复率合格,却被导师打回修改。格式错乱、参考文献出错、语病、引用标记错位、AIGC 痕迹残留&#xf…

避开同义词替换大坑,思梦航 AI 第五代智能改写降重实测,适配双审检测

避开同义词替换大坑,思梦航 AI 第五代智能改写降重实测,适配双审检测

2026/9/8 15:23:13

2026 高校双审全面落地,不少同学陷入无尽降重死循环:老旧工具只会简单同义词替换,查重标红改完变绿,AIGC 检测直接飘红;好不容易把 AI 痕迹压下去,重复率又反弹。更麻烦的是改写之后数据出错、专业名词被篡…

写完论文别忽视图表!很多人栽在这,盲审容易扣分

写完论文别忽视图表!很多人栽在这,盲审容易扣分

2026/9/8 15:23:13

不少同学误以为图表只是论文的装饰元素。但站在导师和盲审老师的角度,图表是展示实验逻辑、研究结果最直观的载体,图表质量不达标,整篇论文的专业印象直接大打折扣。 很多理工科、经管类毕业生,正文写完、重复率也改合格&#xf…

Spring Boot高校人事管理系统:从需求设计到权限部署的完整方案

Spring Boot高校人事管理系统:从需求设计到权限部署的完整方案

2026/9/8 15:13:13

每年到了毕业设计选题交流的时候,总会被同一类问题刷屏:“Spring Boot 能做什么题?怎么做才不像网上烂大街的增删改查?”我给得最多的建议之一,就是高校人事管理系统。原因很实际:Spring Boot 技术栈在它身…

中国人民大学杨琳团队《Nature Communications》 | 全球潮汐湿地土壤有机碳时空格局与环境驱动:一项2009-2020年的全球评估

中国人民大学杨琳团队《Nature Communications》 | 全球潮汐湿地土壤有机碳时空格局与环境驱动:一项2009-2020年的全球评估

2026/9/7 20:21:46

本文首发于“生态学者”!从“湿地面积”到“土壤碳密度”:为什么需要重新认识潮汐湿地蓝碳变化?潮汐湿地位于陆地与海洋的交汇地带,包括红树林、盐沼和潮滩,是全球重要的蓝碳生态系统。其土壤能够长期储存大量有机碳&a…

adb抓包

adb抓包

2026/9/8 4:55:53

前言 本文介绍如何通过 tcpdump 在 Android 手机上抓取网络数据包,并在电脑端使用 Wireshark 进行分析。适用于需要排查 App 网络请求、分析接口调用或调试网络问题的开发与测试场景。1. 手机要有 root 权限2. 下载 tcpdump3. adb push C:\Users\zhangkuixun\Downlo…

大模型推理镜像极简瘦身:从 25GB 巨无霸到 3GB 精简镜像实战

大模型推理镜像极简瘦身:从 25GB 巨无霸到 3GB 精简镜像实战

2026/9/7 8:03:37

大模型推理镜像极简瘦身:从 25GB 巨无霸到 3GB 精简镜像实战 在云原生基础设施中,容器镜像体积直接决定了服务的部署速度与弹性扩容敏捷度。对于传统的 Go / Java 微服务,镜像体积通常被严格控制在 50MB 到 200MB 以内,拉取镜像只…

芯片良率波动可视化:动画拆解工艺因果,重建客户信任

芯片良率波动可视化:动画拆解工艺因果,重建客户信任

2026/9/8 0:02:30

芯片这个行业有个不太被人摆到台面上、但几乎每天都在发生的场景:客户拿着一条良率曲线截图问你,这批货的良率怎么掉了三个点,是不是工艺出问题了,产生的不良会不会流到他们产线上去。你解释了半天,客户似懂非懂&#…

PyTorch DataLoader参数冲突:sampler与shuffle互斥的根源与正确写法

PyTorch DataLoader参数冲突:sampler与shuffle互斥的根源与正确写法

2026/9/8 0:02:30

ValueError: sampler option is mutually exclusive with shuffle,这个报错我在 PyTorch 的 DataLoader 上至少见过几十次了,而且很有意思的是,它经常不是新手专属——很多写了好几年模型的老手,在从单机改成自定义采样器&#xf…

中国车企再破谣言,GAC吉利零跑获欧盟安全五星

中国车企再破谣言,GAC吉利零跑获欧盟安全五星

2026/9/8 0:02:30

有人可能在网上开着皮卡拍视频,声称中国电动车不仅性能不如美国大排量车型,安全性也堪忧。然而事实恰恰相反,GAC、吉利和零跑最新推出的电动车型在极为严苛的欧盟新车安全评鉴(Euro NCAP)测试中全部斩获满分。就在特斯…

远程协作的工作台整理

远程协作的工作台整理

2026/9/8 4:23:39

远程协作的工作台整理远程协作的核心不是再加一个工具,而是让交接信息足够完整。异步任务要写明目标、输入位置、完成标准和需要决策的人。 工作台的最小配置 将日程、待办、代码和沟通入口收拢到少数固定位置;通知按紧急程度分层。工作台不需要模仿办公…

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

2026/9/8 3:19:39

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

2026/9/8 4:00:23

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…