P.1929 소수 구하기

castlehi·2022년 2월 23일
0

CodingTest

목록 보기
8/67
post-thumbnail

1929 소수 구하기

시간 제한메모리 제한제출정답맞힌 사람정답 비율
2 초 256 MB150484422102978426.745%

문제

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

입력

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

출력

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

예제 입력 1

3 16

예제 출력 1

3
5
7
11
13

코드

import java.io.*;
import java.util.ArrayList;
import java.util.Arrays;

public class P_1929 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int[] array = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();

        ArrayList<Boolean> list = new ArrayList<>(1000001);
        list.add(false);
        list.add(false);
        for (int i = 2; i <= 1000000; i++)
            list.add(true);

        for (int i = 2; i * i <= 1000000; i++) {
            if (list.get(i))
                for (int j = i * i; j <= 1000000; j += i) list.set(j, false);
        }

        for (int i = array[0]; i <= array[1]; i++) {
            if (list.get(i))
                bw.write(i + "\n");
        }
        bw.flush();
    }
}
profile
Back-end Developer

0개의 댓글

관련 채용 정보