백준 4948

김경욱·2025년 8월 19일

백준

목록 보기
49/121

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()메서드는 정말 중요한 것 같다.

0개의 댓글