当前位置:首页 > Java

java 如何编写素数

2026-03-22 21:52:39Java

判断素数的方法

素数是大于1的自然数,且只能被1和它本身整除。在Java中,可以通过多种方法判断或生成素数。

java 如何编写素数

基础判断方法

使用循环检查从2到该数的平方根范围内是否有能整除的数。若没有,则该数为素数。

java 如何编写素数

public static boolean isPrime(int num) {
    if (num <= 1) {
        return false;
    }
    for (int i = 2; i <= Math.sqrt(num); i++) {
        if (num % i == 0) {
            return false;
        }
    }
    return true;
}

优化方法(埃拉托斯特尼筛法)

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

public static void sieveOfEratosthenes(int n) {
    boolean[] isPrime = new boolean[n + 1];
    Arrays.fill(isPrime, true);
    isPrime[0] = false;
    isPrime[1] = false;

    for (int i = 2; i * i <= 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 static void main(String[] args) {
    int number = 29;
    if (isPrime(number)) {
        System.out.println(number + " 是素数");
    } else {
        System.out.println(number + " 不是素数");
    }

    System.out.println("30以内的素数:");
    sieveOfEratosthenes(30);
}

输出结果

29 是素数
30以内的素数:
2 3 5 7 11 13 17 19 23 29

注意事项

  • 基础方法适用于单个数的判断,时间复杂度为O(√n)。
  • 筛法适用于批量生成素数,时间复杂度为O(n log log n),但空间复杂度较高。
  • 对于极大数的素数判断,可能需要更高效的算法(如Miller-Rabin测试)。

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

相关文章

java如何读取文件

java如何读取文件

读取文件的常用方法 Java提供了多种读取文件的方式,适用于不同场景和需求。以下是几种常见的方法: 使用FileInputStream和BufferedInputStream读取二进制文件 try…

如何配置java环境

如何配置java环境

下载JDK安装包 访问Oracle官网或OpenJDK官网,选择适合操作系统的JDK版本(如Windows、macOS或Linux)。下载完成后,运行安装程序并按照提示完成安装。 设置环境变量 右键…

java如何输入数组

java如何输入数组

输入数组的方法 在Java中,可以通过多种方式输入数组,具体取决于输入源(如控制台、文件等)和数组类型(如基本类型或对象类型)。以下是几种常见的方法: 使用Scanner从控制台输入 对于基本数据类…

如何安装java环境

如何安装java环境

下载JDK安装包 访问Oracle官方网站或OpenJDK项目页面,选择适合操作系统的JDK版本(如Windows、macOS或Linux)。确保下载与系统架构匹配的版本(32位或64位)。 运行安…

java如何配置环境变量

java如何配置环境变量

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

java如何解决高并发

java如何解决高并发

Java 高并发解决方案 使用线程池优化资源管理 线程池(如 ThreadPoolExecutor)能避免频繁创建和销毁线程的开销。通过核心线程数、最大线程数和任务队列的合理配置,可以平衡系统负载。例…