-
[백준] 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