当前位置:首页 > Java

java如何打印素数

2026-03-26 00:29:54Java

打印素数的方法

在Java中打印素数可以通过多种方法实现,以下介绍几种常见的实现方式。

使用基本循环判断素数

通过遍历2到n-1之间的所有数,判断是否能被整除。若不能被任何数整除,则为素数。

java如何打印素数

public class PrimeNumbers {
    public static void main(String[] args) {
        int n = 100; // 打印1到100之间的素数
        for (int i = 2; i <= n; i++) {
            boolean isPrime = true;
            for (int j = 2; j < i; j++) {
                if (i % j == 0) {
                    isPrime = false;
                    break;
                }
            }
            if (isPrime) {
                System.out.print(i + " ");
            }
        }
    }
}

优化循环范围

通过减少循环范围至√n,提高效率。

java如何打印素数

public class PrimeNumbersOptimized {
    public static void main(String[] args) {
        int n = 100;
        for (int i = 2; i <= n; i++) {
            boolean isPrime = true;
            for (int j = 2; j <= Math.sqrt(i); j++) {
                if (i % j == 0) {
                    isPrime = false;
                    break;
                }
            }
            if (isPrime) {
                System.out.print(i + " ");
            }
        }
    }
}

使用埃拉托斯特尼筛法

通过标记非素数的方式高效筛选素数。

public class SieveOfEratosthenes {
    public static void main(String[] args) {
        int n = 100;
        boolean[] isPrime = new boolean[n + 1];
        Arrays.fill(isPrime, true);
        isPrime[0] = isPrime[1] = false;

        for (int i = 2; i <= Math.sqrt(n); i++) {
            if (isPrime[i]) {
                for (int j = i * i; j <= n; j += i) {
                    isPrime[j] = false;
                }
            }
        }

        for (int i = 2; i <= n; i++) {
            if (isPrime[i]) {
                System.out.print(i + " ");
            }
        }
    }
}

使用递归方法判断素数

通过递归方式判断是否为素数。

public class PrimeRecursive {
    public static boolean isPrime(int n, int divisor) {
        if (n <= 2) return (n == 2);
        if (n % divisor == 0) return false;
        if (divisor * divisor > n) return true;
        return isPrime(n, divisor + 1);
    }

    public static void main(String[] args) {
        int n = 100;
        for (int i = 2; i <= n; i++) {
            if (isPrime(i, 2)) {
                System.out.print(i + " ");
            }
        }
    }
}

注意事项

  • 基本循环方法适用于小范围数据,但效率较低。
  • 埃拉托斯特尼筛法适合大范围数据,效率较高。
  • 递归方法代码简洁,但可能因栈溢出问题不适用于大数。

标签: 素数java
分享给朋友:

相关文章

如何使用java

如何使用java

安装Java开发环境 下载并安装Java Development Kit(JDK),推荐从Oracle官网或OpenJDK获取最新版本。安装完成后配置环境变量,确保JAVA_HOME指向JDK安装路径…

java程序如何运行

java程序如何运行

编写Java代码 使用文本编辑器或IDE(如IntelliJ IDEA、Eclipse)编写Java源代码,保存为.java文件。例如: public class HelloWorld {…

如何学好java

如何学好java

理解基础概念 掌握Java的核心概念是学习的基础。包括数据类型、变量、运算符、控制流(如循环和条件语句)、数组等。理解面向对象编程(OOP)的四大特性:封装、继承、多态和抽象。 实践编程练习 通过实…

java如何配置环境变量

java如何配置环境变量

配置Java环境变量的方法 下载并安装JDK 从Oracle官网或OpenJDK下载适合操作系统的JDK安装包。运行安装程序并按照提示完成安装,记下JDK的安装路径(例如C:\Program File…

java如何连接mysql数据库

java如何连接mysql数据库

连接 MySQL 数据库的步骤 添加 MySQL 驱动依赖 在项目中引入 MySQL 的 JDBC 驱动。如果使用 Maven,可以在 pom.xml 中添加以下依赖: <dependency…

java中如何获取当前时间

java中如何获取当前时间

获取当前时间的几种方法 使用 java.time 包(Java 8及以上推荐) import java.time.LocalDateTime; LocalDateTime currentTime =…