베르트랑 공준 (백준 4948번)

박영준·2023년 5월 22일
0

코딩테스트

목록 보기
134/300


해결법

방법 1

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
    
        Scanner in = new Scanner(System.in);
        
        While (true) {
            int n = sc.nextInt();
            
            // 반복문의 종료 조건
            if (n == 0) {
                break;
            }
            
            // 에라토스테네스의 체 : 제외시키기 1
            boolean arr[] = new boolean[2 * n + 1];        // n < 소수 범위 <= 2n  (인덱스는 0부터이므로 +1이 필요)
            arr[0] = true;        // 0, 1 소수가 아니므로 true를 준다
            arr[1] = true;
            
            // 에라토스테네스의 체 :제외시키기 2
            for (int = 2; i <= Math.sqrt(2 * n + 1); i++) {        // for문으로 판단할 숫자 모으기 : 소수는 2부터 시작 ~ 2 * n + 1 제곱근까지 (제곱근으로 정수가 되는 수는 소수가 X)
                for (int j = i * i; j < 2 * n + 1; j += i) {        // 각각의 숫자가 소수인지 판단하기 : i의 제곱부터 시작 ~ 2 * n + 1 까지 (제곱하면 소수가 X)
                    arr[j] = true;
                }
            }
            
            // 구할 범위
            int count = 0;
            
            for (int i = n + 1; i < 2 * n + 1; i++) {        // n보다 크고 < 소수 <= 2n 보다 작거나 같은 경우
                if (arr[i] == false) {
                    coount++;
                }
            }
            
            System.out.println(count);
        }
    }
}

베르트랑 공준 (백준 4948번)

profile
개발자로 거듭나기!

0개의 댓글