본문 바로가기
알고리즘/백준

백준 4948번 - 베르트랑 공준 (Java 8)

by latissimus 2022. 2. 24.

https://www.acmicpc.net/problem/4948

 

4948번: 베르트랑 공준

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

www.acmicpc.net

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

public class Main {
        public static boolean[] prime = new boolean[246913];

        public static void main(String[] args) throws IOException {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            List<Integer> answers = new ArrayList<>();
            int n;
            getPrime();

            while((n = Integer.parseInt(br.readLine())) != 0) {

                int count = 0;
                //false 소수,  true 소수 아님
                //boolean의 초기값의 false임을 감안해 그냥 이렇게 사용했다.
                for(int i=n+1; i<=n*2; i++){
                    if(!prime[i]){
                        count++;
                    }
                }
                answers.add(count);
            }
            for(int answer : answers){
                System.out.println(answer);
            }
        }
        public static void getPrime(){
            prime[0] = prime[1] = true;

            for (int i = 2; i <= Math.sqrt(prime.length); i++) {
                if (prime[i]) {
                    continue;
                }
                for (int j = i * i; j < prime.length; j += i) {
                    prime[j] = true;
                }
            }
        }

}

댓글