![]()
public class PrimeSieve { public static void main(String[] args) { int max = 120; boolean[] isPrime = new boolean[max + 1]; for (int i = 2; i <= max; i++) { isPrime[i] = true; } System.out.println("=== 开始用埃氏筛法筛选1~120的素数 ==="); System.out.println("步骤1:先把所有数标记为素数(true),1不是素数\n"); for (int i = 2; i * i <= max; i++) { if (isPrime[i]) { System.out.println("=== 当前素数:" + i + " ==="); System.out.println("标记所有" + i + "的倍数(" + i + "*2, " + i + "*3, ...)为非素数"); for (int j = i * 2; j <= max; j += i) { isPrime[j] = false; System.out.print(j + " "); } System.out.println("\n"); } } System.out.println("=== 筛选完成!1~120的所有素数如下: ==="); int count = 0; for (int i = 2; i <= max; i++) { if (isPrime[i]) { System.out.printf("%-4d", i); count++; if (count % 10 == 0) { System.out.println(); } } } System.out.println("\n\n总共有 " + count + " 个素数"); } }