当前位置: 首页 > 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.jsqmd.com/news/976428/

相关文章:

  • 如何使用PHAR Utils快速创建可重现的PHAR包:Timestamps类完整指南
  • 天津艺术生中考择校排行:5所优质特色高中实力盘点 - 奔跑123
  • 别再手动改销售单了!SAP SD客户物料主数据VD51配置详解(附销售订单自动带出技巧)
  • 2026 西安靠谱全屋刷新服务中心推荐榜|4 家优质修缮企业盘点 - 冠盾建筑修缮
  • 如何让经典IPX游戏在现代Windows系统重生:IPXWrapper完整指南
  • 060、色彩管理系统设计:sRGB、DCI-P3、Display P3 色域映射与 Gamut 裁剪
  • 解决90%常见问题:openai_gpt部署与使用故障排除终极指南
  • 2026 西安墙面维修门店哪家靠谱 TOP4:陕西冠盾领衔专业修缮榜 - 冠盾建筑修缮
  • Python之abing包语法、参数和实际应用案例
  • 别再只盯着Shiro-550/721了:聊聊Logback JNDI注入(CVE-2019-14439)在CTF和实战中的新花样
  • 2026年金华市CPPM考试最新全攻略:科目题型、通过率、备考重点及官方双认证报考机构推荐 - 众智商学院课程中心
  • 实验室/工业/防爆/电子/分析天平源头直供:万泰定制化服务与交期优势 - 品牌推荐大师
  • 虚拟 DOM
  • 从零落地全周期管理!三步搭建轻量化设备精益运维体系
  • 掌握SPT-AKI存档编辑器:从问题诊断到高级定制的完全指南
  • 物联网技术发展里程碑梳理(截至 2026 年)
  • 手把手教你用draw.io(diagrams.net)画高颜值技术配图,提升文章和文档逼格
  • 北京朝阳/东城区黄金回收全攻略:从检测到打款,这三点必须盯紧 - 奢侈品回收测评
  • Node-Influx 在企业级应用中的应用:监控、日志分析和物联网数据处理
  • 机器人自主导航终极指南:RTAB-Map环境感知与3D建图实战解密
  • 如何让大语言模型在普通电脑上流畅运行:通义千问Qwen模型优化指南
  • AI Overviews时代:Google搜索流量的重新分配与应对策略
  • EMO-Ai-7b-Q8_0-GGUF部署实战:从Docker到云服务的全面指南
  • Mermaid Live Editor:5分钟掌握实时图表编辑的终极指南
  • 8D标准落地全步骤!手把手教你根治车间问题,彻底告别反复整改
  • 2026 成都钻石回收科普,详解 4C 评定标准,收的顶教你看懂估价 - 奢侈品回收测评
  • Node-Influx 核心功能解析:掌握数据写入、查询和管理的完整流程
  • Czkawka完整指南:如何快速清理电脑垃圾文件释放存储空间
  • 一件POLO衫的诞生:全工序解析、工艺难点与自动化设备
  • 跟我一起学“仓颉”编程语言-泛型约束