素数的学习

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

posted @ 2026-06-08 19:28  2295209806  阅读(10)  评论(0)    收藏  举报