[BOJ] 1929 소수구하기
문제
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.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine());
int m = Integer.parseInt(st.nextToken());
int n = Integer.parseInt(st.nextToken());
Set<Integer> set = new HashSet<>();
Set<Integer> linkedSet = new LinkedHashSet<>();
for (int i = m; i <= n; i++)
set.add(i);
for (int p = 2; p <= n; p++) {
int i = 1;
int newP = p * i;
while (newP <= n) {
if (set.contains(newP)) {
if (i == 1) {
linkedSet.add(newP);
set.remove(newP);
} else {
set.remove(newP);
}
}
newP = p * ++i;
}
}
Iterator<Integer> it = linkedSet.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
bw.flush();
}
}
Author And Source
이 문제에 관하여([BOJ] 1929 소수구하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ffwang/BOJ-1929-소수구하기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)