알고리즘/백준

BOJ) 베르트랑 공준

Zin0_0 2020. 6. 24. 17:11
반응형

베르트랑 공준

 

4948번: 베르트랑 공준

문제 베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다. 이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 ��

www.acmicpc.net

풀이

 

에라토네스의 채를 확실히 익혔는지 확인하려고 풀었다.

방법은 바로 이전 포스팅과 같기 때문에 딱히 포스팅할 말은 없다.

 

에라토네스 채는 자신의 배수에 대해서 소수가 아님을 체크해주는 방식이다.

 

코드

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class FindPrimeNums_4948 {
    final static String END = "0";
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String inputStr = "";

        while(!(inputStr = br.readLine()).equals(END)) {
            int n = Integer.parseInt(inputStr);
            System.out.println(getCnt(n));
        }
    }

    private static int getCnt(int n) {
        int cnt =0;
        boolean[] prime = new boolean[n*2+1];

        for(int i=2; i<=2*n; i++) {
            if(!prime[i]) {
                if(i >n) {
                    cnt++;
                }
                for(int j=i*2; j<=2*n; j+=i) {
                    prime[j] = true;
                }
            }
        }
        return cnt;
    }
}
반응형