public class Main {
public static void main(String[] args) {
int n = 10000 + 1; // 1 ~ n 为筛选的合数和素数标识的总数
int[] primes = new int[n];
boolean[] isPrimes = new boolean[n]; // false 素数,true 合数,0 ~ 1 是合数
int len = 0;
for (int i = 2; i < n; ++i) { // i 初始为 2 倍数,线性素数倍
if (!isPrimes[i]) primes[len++] = i; //添加素数
for (int j = 0; j < len && primes[j] * i < n; ++j) {
isPrimes[primes[j] * i] = true; //设置为合数
if (i % primes[j] == 0) break; //当倍数能整数当前合数时,结束本次运行,目的是之后的合数筛不被赋值 2 次
}
}
System.out.println(len);
}
}
输出筛选出:1229 个素数