시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
---|---|---|---|---|---|
2 초 | 256 MB | 150484 | 42210 | 29784 | 26.745% |
M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오.
첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다.
한 줄에 하나씩, 증가하는 순서대로 소수를 출력한다.
3 16
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();
}
}