Sliver
문제
M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다.
출력
한 줄에 하나씩, 증가하는 순서대로 소수를 출력한다.
풀이
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
StringBuilder sb = new StringBuilder();
int min = sc.nextInt();
int max = sc.nextInt();
boolean[] isComposite = new boolean[max+1];
for(int i=2 ; i<=max; i++){
if(!isComposite[i]){
for(int j=2 ; i*j<=max; j++){
isComposite[i*j] = true;
}
}
}
for(int i=min ; i<=max; i++){
if(i<=1) continue;
if(!isComposite[i]) sb.append(String.valueOf(i)).append("\n");
}
System.out.print(sb);
sc.close();
}
}
에라스토텔레스의 체 알고리즘
- 효율적으로 소수를 찾기 위해 배수 제거 원리를 사용하는 알고리즘
- 시간 복잡도 :
https://strong-2-min.tistory.com/59
https://www.acmicpc.net/problem/1929
'Algorithm > Baekjoon Oline Judge - Java' 카테고리의 다른 글
[백준] 4134_다음 소수 (1) | 2024.06.08 |
---|---|
[백준] 10814_나이순정렬 (0) | 2024.06.01 |
[백준] 2485_가로수 / 최대공약수, 유클리드호재법 (0) | 2024.06.01 |
[백준] 1620_나는야 포켓몬 마스터 이다솜 (0) | 2024.06.01 |
[백준] 1427_ 소트인사이드 / StringBuilder.reverse(), Collections.reverseOrder() (0) | 2024.05.26 |