当前位置:首页 > Java

如何打印素数JAVA

2026-03-23 12:17:15Java

打印素数的Java实现

素数是只能被1和自身整除的自然数。以下是几种在Java中打印素数的方法:

方法1:基础检查法

通过遍历每个数字并检查其是否为素数来实现。对于每个数字n,检查2到n-1之间是否有能整除n的数。

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

    private static boolean isPrime(int n) {
        if (n <= 1) {
            return false;
        }
        for (int i = 2; i < n; i++) {
            if (n % i == 0) {
                return false;
            }
        }
        return true;
    }
}

方法2:优化检查法

检查范围可以缩小到√n,因为如果n不是素数,它必有一个因数小于或等于√n。

private static boolean isPrime(int n) {
    if (n <= 1) {
        return false;
    }
    for (int i = 2; i * i <= n; i++) {
        if (n % i == 0) {
            return false;
        }
    }
    return true;
}

方法3:埃拉托斯特尼筛法

适用于高效生成一定范围内的所有素数。通过标记非素数来筛选素数。

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

        for (int i = 2; i * i <= limit; i++) {
            if (isPrime[i]) {
                for (int j = i * i; j <= limit; j += i) {
                    isPrime[j] = false;
                }
            }
        }

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

方法4:使用Java 8流式处理

结合流和Lambda表达式实现素数打印。

如何打印素数JAVA

import java.util.stream.IntStream;

public class PrimeStream {
    public static void main(String[] args) {
        int limit = 100;
        IntStream.rangeClosed(2, limit)
                .filter(PrimeStream::isPrime)
                .forEach(n -> System.out.print(n + " "));
    }

    private static boolean isPrime(int n) {
        return n > 1 && IntStream.rangeClosed(2, (int) Math.sqrt(n))
                .noneMatch(i -> n % i == 0);
    }
}

选择建议

  • 对于小范围素数检查,基础或优化方法足够。
  • 对于大范围素数生成,筛法效率更高。
  • 流式处理适合现代Java编程风格,但性能略低于筛法。

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

相关文章

js  实现现实素数

js 实现现实素数

判断素数的方法 素数是大于1的自然数,除了1和它本身外没有其他约数。在JavaScript中可以通过以下方法判断一个数是否为素数: function isPrime(num) { if…

JAVA验证码如何验证

JAVA验证码如何验证

JAVA验证码验证方法 验证码验证通常分为生成、存储、用户输入验证三个步骤。以下是常见的实现方法: 生成验证码 使用Java生成随机验证码(数字、字母或混合)并输出为图片或文字: // 生成4位随…

js实现素数

js实现素数

判断一个数是否为素数 素数是指大于1的自然数,除了1和它本身外,不能被其他自然数整除。以下是一个简单的JavaScript函数来判断一个数是否为素数: function isPrime(nu…

如何查看JAVA组件

如何查看JAVA组件

查看已安装的Java组件 使用命令行工具java -version可以查看当前安装的Java运行时环境(JRE)版本。若要查看Java开发工具包(JDK)版本,使用javac -version。 列…

JAVA如何纵向输出

JAVA如何纵向输出

纵向输出字符串的方法 在Java中实现字符串的纵向输出,可以通过多种方式实现。以下是几种常见的方法: 方法一:使用循环遍历字符数组 将字符串转换为字符数组,通过循环逐个输出每个字符并换行。 St…

老师如何教好JAVA

老师如何教好JAVA

明确教学目标 设定清晰的课程目标,例如掌握基础语法、面向对象编程、集合框架等。根据学生水平调整内容深度,初学者侧重实践,高级学生可引入设计模式或框架。 采用项目驱动教学 通过实际项目(如学生管理系统…