import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
while(true)
{
int N = Integer.parseInt(br.readLine());
if (N == 0)
{
System.out.println();
break;
}
int count = 0;
for (int i = N+1; i <= 2 * N; i++)
{
if(isPrime(i) == true)
{
count++;
}
}
System.out.println(count);
}
}
private static boolean isPrime(int num) {
if (num < 2) {
return false;
}
if (num == 2) {
return true;
}
if (num %2 ==0)
{
return false;
}
if (num >= 3) {
for (int n = 3; n * n <= num; n += 2) {
if (num % n == 0) {
return false;
}
}
}
return true;
}
}
확실히 소수 판별하는 isPrime() 메서드를 외워야 한다고 생각되는 문제였다. 이번에는 메서드를 까먹어서 저번에 내가 쓴 velog를 이용해서 메서드를 다시 복기하였다. isPrime() 메서드는 num이 2보다 작으면 false, num이 2면 true, num%2==0이면 false, num이 3이상이고 for (int i =3; i * i <= num; i +=2) {num % n ==0}이면 false이다. 만약 이 모든 조건들에 해당되지 않는다면 true를 반환하여 소수인 것이다. isPrime()메서드는 정말 중요한 것 같다.