ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [백준] 1929. 소수 구하기
    PS/Java 2022. 3. 31.

    M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오.


    입력

    첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다.

    출력

    한 줄에 하나씩, 증가하는 순서대로 소수를 출력한다.


    예제 입력 1

    3 16

    예제 출력 1

    3
    5
    7
    11
    13

    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.util.Arrays;
    import java.util.StringTokenizer;
    
    public class Main {
        public static int M;
        public static int N;
        public static boolean[] arr;
        public static void main(String[] args) throws Exception {
    
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            StringTokenizer st = new StringTokenizer(br.readLine());
            M = Integer.parseInt(st.nextToken()); // 1   50
            N = Integer.parseInt(st.nextToken()); // 100 100
            arr = new boolean[N + 1];
            Arrays.fill(arr, false);
            StringBuffer sb = new StringBuffer();
    
            for(int j = 2; j <= N; j++) {
                if(j >= 2 && !arr[j]) {
                    int i = 2;
                    while(!(j * i > N)) {
                        arr[j * i] = true;
                        i++;
                    }
                }
                if(j >= M && !arr[j]) {
                    sb.append(j+"\n");
                }
            }
    
            System.out.println(sb.toString());
        }
    }

    에라토스테네스의 체를 이용해 자기 자신을 제외한 배수들을 전부 소수가 아님으로 바꾸면 최종적으로는 소수만 남게 된다.

    'PS > Java' 카테고리의 다른 글

    [백준] 9663. N-Queen  (0) 2022.03.31
    [백준] 4948. 베르트랑 공준  (0) 2022.03.31
    [백준] 1629. 곱셈  (0) 2022.03.31
    [백준] 2573. 빙산  (0) 2022.03.31
    [백준] 11758. CCW  (0) 2022.03.31

    댓글

Designed by Tistory.