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

素数的学习

  1. 素数定义
    素数(质数):大于 1 的自然数,且只能被 1 和它本身整除(没有其他因数)。
    最小的素数:2(唯一的偶数素数)
    非素数(合数):大于 1 且能被除 1 和自身外的数整除的数
    0、1:既不是素数也不是合数

  2. 素数判断核心逻辑
    基础版:判断 2 ~ num-1 之间的数,是否能整除 num(效率低)
    优化版:只需判断 2 ~ √num 之间的数(因数成对出现,超过平方根无需判断)
    终极优化:偶数直接排除(除 2 外,所有偶数都不是素数),大幅减少循环次数

  3. 常见素数场景
    判断单个数字是否为素数
    输出指定范围内的所有素数
    统计指定范围内素数的个数
    判断单个素数、打印范围素数、统计素数个数的代码:
    public class PrimeNumber {
    public static void main(String[] args) {
    // 1. 测试:判断单个数字是否为素数
    int num = 29;
    System.out.println(num + " 是否为素数:" + isPrime(num));

    // 2. 打印 2 ~ 100 之间的所有素数
    int start = 2;
    int end = 100;
    System.out.println("\n" + start + " ~ " + end + " 之间的素数:");
    printPrimeInRange(start, end);

    // 3. 统计 2 ~ 100 之间素数的个数
    int count = countPrimeInRange(start, end);
    System.out.println("\n" + start + " ~ " + end + " 之间的素数总数:" + count);
    }

    /**

    • 核心方法:判断一个数是否为素数(优化版,效率最高)
    • @param num 待判断的数字
    • @return true=素数,false=非素数
      */
      public static boolean isPrime(int num) {
      // 1. 小于等于1:不是素数
      if (num <= 1) {
      return false;
      }
      // 2. 等于2:唯一的偶数素数
      if (num == 2) {
      return true;
      }
      // 3. 偶数(除2外):直接不是素数
      if (num % 2 == 0) {
      return false;
      }
      // 4. 只需判断 3 ~ √num 之间的奇数(步长=2,跳过偶数)
      for (int i = 3; i <= Math.sqrt(num); i += 2) {
      if (num % i == 0) {
      return false;
      }
      }
      // 所有条件都满足:是素数
      return true;
      }

    /**

    • 打印指定范围内的所有素数
    • @param start 起始值
    • @param end 结束值
      */
      public static void printPrimeInRange(int start, int end) {
      for (int i = start; i <= end; i++) {
      if (isPrime(i)) {
      System.out.print(i + " ");
      }
      }
      }

    /**

    • 统计指定范围内素数的个数

    • @param start 起始值

    • @param end 结束值

    • @return 素数数量
      */
      public static int countPrimeInRange(int start, int end) {
      int count = 0;
      for (int i = start; i <= end; i++) {

      if (isPrime(i)) {
      count++;
      }
      }
      return count;
      }
      }

运行结果:

c915012c5f05d161823169df9b0599d1

学习心得:
通过学习这段 Java 素数代码,我熟练掌握了素数的判断规则。学会通过排除偶数、遍历平方根优化循环,提升程序运行效率。同时理解了模块化编程思想,拆分功能方法,让代码整洁清晰、可复用性更强,收获颇丰。

http://www.rkmt.cn/news/1488153.html

相关文章:

  • 如何使用PHAR Utils快速创建可重现的PHAR包:Timestamps类完整指南
  • 别再手动改销售单了!SAP SD客户物料主数据VD51配置详解(附销售订单自动带出技巧)
  • 如何让经典IPX游戏在现代Windows系统重生:IPXWrapper完整指南
  • 手把手教你用draw.io(diagrams.net)画高颜值技术配图,提升文章和文档逼格
  • Node-Influx 在企业级应用中的应用:监控、日志分析和物联网数据处理
  • EMO-Ai-7b-Q8_0-GGUF部署实战:从Docker到云服务的全面指南
  • Czkawka完整指南:如何快速清理电脑垃圾文件释放存储空间
  • LDA与PCA选择指南:从任务目标到数据特性的实战决策树
  • 网络安全岗位解析5:安全运维岗位,从零基础入门到精通,收藏这一篇就够了!
  • 深入解析HI08主机端口:嵌入式系统高速并行通信与DSP数据交换
  • 如何在macOS上运行Windows应用:Whisky跨平台兼容性终极指南
  • 3步解锁VR视频:无需头盔的终极2D播放方案
  • 微信聊天记录完整备份终极指南:3步实现数据永久保存
  • 完整教程:go2rtc视频流转发工具从入门到精通
  • 【湘潭黄金回收】足金999回收实测三家正规门店排名 - 润富黄金回收
  • 如何在JavaScript应用中高效计算太阳和月亮位置?SunCalc完整指南
  • 智能语音音乐管家:XiaoMusic如何让小爱音箱变身专业级音乐服务器
  • 主治医师备考课程怎么选?阿虎医考四阶段课程体系全解读 - 医考机构品牌测评专家
  • 3个技巧让中文文献管理效率翻倍:Jasminum插件深度指南
  • 终极歌词批量提取方案:一键同步网易云QQ音乐LRC文件
  • 2026 年狗狗驱虫药排行榜:TOP5 排名独家揭秘 - 思溯深度专栏
  • Czkawka终极指南:三步快速清理重复文件释放存储空间
  • 国内商用UV平板打印机品牌排行 - 奔跑123
  • 3个颠覆性创新:Kronos如何用AI语言模型重塑量化交易范式
  • 2026苏州风口风阀厂家推荐及行业应用解析 - 品牌排行榜
  • Boss Show Time:3步掌握招聘时间可视化,告别无效投递的求职指南
  • 2026 杭州萧山区梵克雅宝卡地亚回收指南,认准中检资质不踩隐形扣费坑 - 奢侈品回收评测
  • 终极macOS鼠标光标个性化指南:Mousecape让你的桌面焕然一新
  • MetaRTC实战:如何为你的安防摄像头或IoT设备轻松添加H.265 WebRTC直播功能?
  • 东莞黄金回收甄选技巧:实测本地老牌门店,价格公道流程透明 - 薛定谔的梨花猫