
해결
코드
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
boolean[] primeArray = getPrimeArray(123456*2);
StringBuilder sb = new StringBuilder();
int cnt=0;
int[] cntArray = new int[primeArray.length];
for(int i=0; i<primeArray.length; i++) {
if( !primeArray[i] ) {
cnt++;
}
cntArray[i] = cnt;
}
while(true) {
int num = Integer.parseInt(br.readLine());
if( num == 0 ) break;
sb.append(cntArray[num*2] - cntArray[num] + "\n");
}
System.out.println(sb);
}
public static boolean[] getPrimeArray(int max) {
boolean[] primeArray = new boolean[max + 1];
primeArray[0] = true;
primeArray[1] = true;
for(int i=2; i<=Math.sqrt(max); i++) {
if( primeArray[i] ) continue;
for(int j=i*i; j<primeArray.length; j += i) {
primeArray[j] = true;
}
}
return primeArray;
}
}