当前位置:首页 > Java

java如何打印素数

2026-03-26 00:29:54Java

打印素数的方法

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

使用基本循环判断素数

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

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,提高效率。

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 + " ");
            }
        }
    }
}

使用递归方法判断素数

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

java如何打印素数

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中,创建对象主要通过new关键字调用构造函数完成。基本语法为: ClassName objectName = new ClassName(); 例如创建String对象…

java如何导包

java如何导包

导入包的方法 在Java中,导入包(package)可以通过import语句实现,用于引入其他类或包中的功能。以下是几种常见的导包方式: 导入单个类 import java.util.ArrayL…

如何编译java

如何编译java

安装JDK 确保系统已安装Java Development Kit(JDK)。可通过命令行输入 javac -version 和 java -version 验证是否安装成功。若未安装,需从Oracl…

java如何产生随机数

java如何产生随机数

使用 Math.random() 方法 Math.random() 生成一个范围在 [0.0, 1.0) 的伪随机 double 值。通过缩放和偏移可以生成指定范围的随机数。 double ra…

java如何运行程序

java如何运行程序

运行Java程序的步骤 安装Java开发工具包(JDK) 确保系统已安装JDK,可通过命令行输入java -version和javac -version验证。若未安装,需从Oracle官网下载并配置环…

如何搭建java开发环境

如何搭建java开发环境

下载并安装JDK 从Oracle官网或OpenJDK下载适合操作系统的JDK版本。运行安装程序并按照提示完成安装,建议选择默认路径以减少配置复杂度。 配置环境变量 在系统环境变量中添加JAVA_HO…