📅  最后修改于: 2023-12-03 15:16:38.399000             🧑  作者: Mango
本程序通过输入一个整数n,将小于等于n的所有素数打印出来,采用筛选法思想,时间复杂度为O(n*log(log(n)))。
本程序实现的功能如下:
PrimePrinter.java
文件javac PrimePrinter.java
java PrimePrinter
代码如下,其中注释为关键代码解析:
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))),在实际应用中具有较高的效率和准确性。