본문 바로가기

[BOJ] - JAVA

[백준] 4948 : 베르트랑 공준 JAVA 풀이

1. 인수로 받은 수가 소수인지 판별하는 함수 생성

    -> 합성수는 2와 자신의 제곱근 사이에 약수가 반드시 한 개 이상 존재한다는 점을 활용

2. N을 입력받음

3. N보다 크고 2N 이하인 수를 함수에 하나씩 넣어 소수라면 개수를 증가시킴

4. 소수의 개수를 출력함

5. 0이 입력되면 멈춤

import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.IOException;
public class Main{
    public static void main(String[] args)throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        while(true){
            int N = Integer.parseInt(br.readLine()); // N을 입력받음
            if(N==0) break; // N이 0이라면 반복문 종료
            int cnt = 0; // 소수의 개수를 셀 변수 생성
            
            for(int i=N+1;i<=2*N;i++){ // N보다 크고 2*N 이하인 수에 대해 반복
            if(is_prime(i)) cnt++; // 소수라면 개수를 증가시킴
            }
            System.out.println(cnt); // 소수의 개수를 출력함
        }
    }
    
    public static boolean is_prime(int n){ // n이 소수라면 true를 반환하는 함수
        for(int i=2;i<=(int)(Math.sqrt(n));i++){ // 2부터 n의 제곱근 이하까지 반복
            if(n%i==0) return false; // 나눠떨어지면 소수가 아니라는 뜻이니 false를 리턴
        }
        return true; // 소수라면 true를 리턴
    }
}