筛选素数。
两个素数的积是合数,利用这一点标记合数。
package countprime;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input;
while ((input = br.readLine()) != null){
int count = countPrime(Integer.parseInt(input));
System.out.println(count);
}
}
static int countPrime(int n){
boolean[] isPrime = new boolean[n];
Arrays.fill(isPrime,true);
int count = 0;
for(int i = 2; i < n; i++){
if(isPrime[i]){
count ++;
for(int j = i*i; j < n; j += i){
isPrime[j] = false;
}
}
}
return count;
}
}