C++如何判断素数_C++质数判断算法代码优化


判断素数的基础方法是试除法,从2到√n逐一试除,若存在整除则非素数;优化时只需检查2和奇数,进一步可用埃氏筛预处理提升多查询效率。

c++如何判断素数_c++质数判断算法代码优化

判断一个数是否为素数(质数)是C++编程中的常见问题。基础思路简单,但随着数值增大,算法效率差异明显。下面从基础实现出发,逐步优化,提升运行效率。

基础方法:试除法

最直接的方法是从2开始,尝试用小于n的所有数去除n,若存在能整除的数,则n不是素数。

bool isPrime(int n) {
   if (n    if (n == 2) return true;
   if (n % 2 == 0) return false;
   for (int i = 3; i       if (n % i == 0)
         return false;
   }
   return true;
}

这种方法逻辑清晰,但当n较大时,循环次数太多,效率低下。

优化1:只检查到√n

如果n能被大于√n的数整除,那么必然有一个小于√n的对应因子。因此只需检查从2到√n之间的数。

立即学习“C++免费学习笔记(深入)”;

bool isPrime(int n) {
   if (n    if (n == 2) return true;
   if (n % 2 == 0) return false;
   for (int i = 3; i * i       if (n % i == 0)
         return false;
   }
   return true;
}

这里跳过偶数(除了2),只检查奇数,将循环次数减少近一半。i * i

ListenLeap ListenLeap

AI辅助通过播客学英语

ListenLeap 217 查看详情 ListenLeap

优化2:预处理小素数 + 6k±1优化

除2和3外,所有素数都可以表示为6k±1的形式。利用这一点,可以进一步减少判断次数。

bool isPrime(int n) {
   if (n    if (n == 2 || n == 3) return true;
   if (n % 2 == 0 || n % 3 == 0) return false;
   for (int i = 5; i * i       if (n % i == 0 || n % (i + 2) == 0)
         return false;
   }
   return true;
}

该方法先排除能被2或3整除的数,然后从5开始,每次检查i和i+2(即6k-1和6k+1),步长为6。在大数判断中性能显著提升。

批量判断:埃拉托斯特尼筛法

如果需要判断多个数是否为素数,特别是范围连续的情况,使用筛法更高效。

#include
std::vector sieve(int n) {
   std::vector isPrime(n + 1, true);
   isPrime[0] = isPrime[1] = false;
   for (int i = 2; i * i       if (isPrime[i]) {
         for (int j = i * i; j             isPrime[j] = false;
      }
   }
   return isPrime;
}

筛法预先标记合数,适合处理大量查询。时间复杂度O(n log log n),空间换时间。

基本上就这些。单次判断用6k±1优化,多次判断优先考虑筛法。关键在于根据场景选择合适方法,避免无谓计算。

以上就是C++如何判断素数_C++质数判断算法代码优化的详细内容,更多请关注其它相关文章!


# 常见问题  # 多个  # 太多  # 单元测试  # 合数  # 结构化  # 如何使用  # 尼克  # 如何判断  # 只需  # c++编程  # 质数  # c++  # 绑定  # 刷关键词排名 现问宙l思首推  # 视频网站代码优化方法  # seo人员工资多高  # 茂名网站建设制作公司  # 钢材销售网站建设  # 唐山网站推广共同合作  # 怎么推广网站到国外  # 企业网站建设方案模板  # 甘肃seo服务平台  # 媒体网站优化范围是什么 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894 】


相关推荐: PySimpleGUI中实现键盘按键与按钮事件绑定教程  《崩坏:星穹铁道》3.6版本异相仲裁打法及配队推荐  123网页端官方登录页 123邮箱网页版即时通讯服务  抖音号升级成企业资质怎么弄?有什么好处?  126邮箱申请入口官网_126邮箱注册免费登录2025  win11关机几秒又自己开机 Win11关机自动重启问题修复  Chart.js 教程:自定义插件实现图表与图例间距调整  铁拳8在线玩 铁拳8在线秒玩入口  苹果手机如何清理系统缓存数据 iPhone非越狱清理垃圾文件的技巧【系统优化】  铁路12306官网入口 铁路12306中国铁路官网登录首页  聚水潭ERP后台管理系统登录 聚水潭ERP官方登录通道  批改网官网首页登录 批改网学生用户登录入口  J*aScript深度克隆:实现高效、健壮与安全的复杂对象复制  byrutor直接访问入口 byrutor官方游戏库  PHP实现等比数列:构建数组元素基于前一个值递增的方法  12306售票时间最新规定 | 网上订票和车站窗口时间一样吗  从HTML表单获取逗号分隔值并转换为NumPy数组进行预测  汽水音乐官网网页版入口 汽水音乐官网网页版在线入口  Final Cut Pro视频加EQ教程  《爱笔思画x》魔棒工具抠图教程  漫蛙漫画官方版直通入口 2025漫蛙漫画免注册访问说明  C++如何实现单例模式_C++线程安全的单例模式写法  《东方航空》添加乘机人方法  《跳跳舞蹈》循环播放方法  Magento 2 产品保存事件中安全更新属性的最佳实践  windows10怎么开启卓越性能_windows10电源选项代码激活  VS Code中的Tailwind CSS IntelliSense插件使用技巧  获取WooCommerce产品在后台编辑页面的分类ID  PHP页面重载后变量状态保持:实现用户档案连续浏览的教程  外卖小程序对接第三方配送  Linux如何优化系统启动流程_Linux启动项优化方案  Win10共享文件夹设置方法 Win10局域网文件共享全攻略【教程】  tiktok国际版入口_tiktok官网网页版链接  使用TinyButStrong生成HTML并结合Dompdf创建PDF教程  Linux如何自动分析系统异常日志_Linux日志智能检测  谷歌浏览器官网地址整理_谷歌浏览器新版直连2026稳定访问  《狐友》联系客服方法  电脑桌面图标怎么变大变小_Windows个性化设置第一课【新手入门】  sublime如何撤销关闭的标签页_sublime重新打开已关闭文件技巧  英国搜索:多数英国人认为语言搜索是未来搜索  微信注销后银行卡解绑了吗_微信注销后银行卡解绑状态  Retrofit根路径POST请求:@POST("/") 的应用与解析  阿里旺旺电脑网页版入口 阿里旺旺电脑版网页登录入口  12306不能订票的时间段是固定的吗? | 节假日购票时间有无变化  智学网app怎么登录忘记密码_智学网app忘记密码找回与重新登录操作方法  mysql如何管理数据库账户_mysql数据库账户管理技巧  《梦想世界:长风问剑录》药师一图流分享  TikTok视频播放不流畅怎么办 TikTok视频播放优化方法  b站如何管理订阅_b站订阅标签分类管理  Highcharts雷达图轴线交点数值标注指南 

 2025-12-17

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.