📌  相关文章
📜  Java程序,可有效打印给定数字的所有素数(1)

📅  最后修改于: 2023-12-03 15:16:38.399000             🧑  作者: Mango

Java程序,可有效打印给定数字的所有素数

本程序通过输入一个整数n,将小于等于n的所有素数打印出来,采用筛选法思想,时间复杂度为O(n*log(log(n)))。

功能介绍

本程序实现的功能如下:

  • 输入一个整数n,打印小于等于n的所有素数
  • 采用筛选法思想进行筛选,时间复杂度为O(n*log(log(n)))
使用方法
  1. 下载本代码,保存为PrimePrinter.java文件
  2. 打开命令行,进入代码所在目录
  3. 输入以下命令进行编译:
    javac PrimePrinter.java
    
  4. 输入以下命令运行程序:
    java PrimePrinter
    
  5. 按照程序提示输入一个整数n,程序将打印小于等于n的所有素数
代码实现

代码如下,其中注释为关键代码解析:

import java.util.Arrays;
import java.util.Scanner;

public class PrimePrinter {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();

        boolean[] primes = new boolean[n + 1]; // 用来标记是否为素数
        Arrays.fill(primes, true); // 初始化全部为素数

        for (int i = 2; i <= n; i++) {
            if (primes[i]) { // 如果该数是素数
                System.out.print(i + " "); // 输出该素数
                for (int j = 2 * i; j <= n; j += i) {
                    primes[j] = false; // 将该素数的倍数标记为非素数
                }
            }
        }
    }
}
总结

本程序采用筛选法思想,对于一个素数,将其倍数标记为非素数,最终剩下的数即为素数。该算法时间复杂度为O(n*log(log(n))),在实际应用中具有较高的效率和准确性。