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

判断一个数是否为质数方法

一.常规方法

        最简单的方法就是从2开始遍历到n(当前数),判断是否是质数:

代码如下:

bool isprime(int x)
{//特例if(x==1)return false;if(x==2) return true;for(int i=2;i<x;i++){if(x%i==0)return false;}return true;
}

该方法时间复杂度为O(N^2)

优化:

我们知道如果存在一个数由两个不是1和其本身的因数,一定一个小于sqrt(n),一个大于sqrt(n)

代码如下:

bool isprime(int x)
{//特例if(x==1)return false;if(x==2)return true;int q=sqrt(x);for(int i=2;i<=q;i++){if(x%i==0)return false;}return true;
}

二.特殊方法

        一个数是质数,一定满足该数在大于2和3的情况下,x%6==1&&x%6==5(总结得出),根据该规则,可以写出下面代码:

bool isprime(int x)
{if(x==1)return false;if(x==2||x==3)return true;if(x%6!=1&&x%6!=5)//得出6的倍数的两侧的数可能为质数,其他不可能return false;int q=sqrt(x);for(int i=5;i<=q;i+=6){if(x%i==0||x%(i+2)==0)//在6倍数两侧判断是否可以被除尽return false;}return true;
}

上面是关于质数的一点新方法,感谢你的阅读!!!

http://www.dtcms.com/a/288647.html

相关文章:

  • VSCode使用Jupyter完整指南配置机器学习环境
  • c#:TCP服务端管理类
  • 正点原子stm32F407学习笔记10——输入捕获实验
  • 2025 年科技革命时刻表:四大关键节点将如何重塑未来?
  • 内网后渗透攻击过程(实验环境)--3、横向攻击
  • SQL 调优第一步:EXPLAIN 关键字全解析
  • 【已解决】GitHub SSH 连接失败解决方案:Permission Denied (publickey) 错误修复指南
  • [Linux]进程 / PID
  • 30天打牢数模基础-决策树讲解
  • Linux入门篇学习——NFS 服务器的搭建和使用和开发板固件烧录
  • Spring Boot 第一天知识汇总
  • 【Java项目安全基石】登录认证实战:Session/Token/JWT用户校验机制深度解析
  • 相似度计算
  • 「Java案例」利用方法求反素数
  • Facebook 开源多季节性时间序列数据预测工具:Prophet 饱和预测 Saturating Forecasts
  • dynamic_cast的实现原理
  • Beamer-LaTeX学习(教程批注版)【6】
  • Elasticsearch 简化指南:GCP Google Compute Engine
  • GPT-4o mini TTS:领先的文本转语音技术
  • 随着GPT-5测试中泄露OpenAI 预计将很快发布 揭秘GPT-5冲击波:OpenAI如何颠覆AI战场,碾压谷歌和Claude?
  • prometheus 黑盒监控和docker检测
  • mysql第三次作业
  • 学习寄存器——GPIO(二)学习BSRR BRR ODR寄存器的原子性和在HAL库的应用
  • 【Go语言-Day 22】解耦与多态的基石:深入理解 Go 接口 (Interface) 的核心概念
  • 【详细笔记】两类曲线积分转换
  • 群组功能实现指南:从数据库设计到前后端交互,上班第二周
  • 【数据结构】揭秘二叉树与堆--用C语言实现堆
  • 人工智能之数学基础:随机实验、样本空间、随机事件
  • Docker Desktop 入门教程(Windows macOS)
  • 深度学习图像分类数据集—百种病虫害分类