https://www.acmicpc.net/problem/1929
문제
풀이
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner kb = new Scanner(System.in);
int x = kb.nextInt();
int y = kb.nextInt();
boolean arr[] = new boolean[y+1];
arr[0] = true;
arr[1] = true;
for(int i = 2; i < Math.sqrt(y+1); i++) {
for(int j = i*i; j < y+1; j += i) {
arr[j] = true;
}
}
for(int k = x; k < y+1; k++) {
if(!arr[k]) {
System.out.println(k);
}
}
}
}
소수를 구하는 문제로 에라토스테네스의 체를 이용한 풀이를 진행한다.
주어진 두 수 사이의 소수를 구하는 문제이지만 별도의 구간에 대한 소수를 찾는 것보단 최종 값까지의 소수를 모두 구한 뒤 다시 구간에 맞는 소수를 출력 하는 것이 더욱 효율적이다.
'문제 풀이 > 백준' 카테고리의 다른 글
[백준] 1806번. 부분합 (JAVA) (0) | 2023.01.12 |
---|---|
[백준] 1920번. 수 찾기 (JAVA) (0) | 2023.01.12 |
[백준] 1654번. 랜선 자르기 (JAVA) (1) | 2023.01.11 |
[백준] 2839번. 설탕 배달 (JAVA) (0) | 2023.01.11 |
[백준] 2751번. 수 정렬하기 2 (JAVA) (0) | 2023.01.11 |