欧拉筛(线性筛)找素数(质数) - Java实现
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.LinkedList;
public class Main {
static int n = 0;
static boolean[] notPrime = null;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
PrintWriter pw = new PrintWriter(System.out);
String[] l1 = br.readLine().split(" ");
n = Integer.parseInt(l1[0]);
notPrime = new boolean[n+1];
solution(pw);
pw.flush();
pw.close();
br.close();
}
private static void solution(PrintWriter pw) {
LinkedList<Integer> prime = new LinkedList<>();
for (int i = 2; i <= n; i++) {
if (!notPrime[i]) {
prime.add(i);
}
for (Integer pj : prime) {
if (i * pj >= notPrime.length) {
break;
}
notPrime[i * pj] = true;
if (i % pj == 0) {
break;
}
}
}
pw.print(prime.size());
}
}