728x90
문제
https://www.acmicpc.net/problem/1929
풀이 코드
- 에라토스테네스의 체 알고리즘을 사용하여 소수 판별
- StringBuilder를 사용하여 모아서 한번에 출력함으로써 실행시간 단축
에라토스테네스의 체 알고리즘에 대해 알아보고 싶다면 아래 링크의 게시물이 도움이 될 것입니다.
https://developer-hm.tistory.com/64
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int m = Integer.parseInt(st.nextToken());
int n = Integer.parseInt(st.nextToken());
//배열 인덱스는 숫자를 나타내고 true이면 해당 숫자는 소수, false이면 소수가 아니다.
boolean[] isPrimes = new boolean[n+1];
Arrays.fill(isPrimes, true);
isPrimes[1] = false; //1은 소수가 아니다.
StringBuilder sb = new StringBuilder();
//에라토스테네스의 체 알고리즘을 사용하여 2~n 구간의 소수 찾기
for (int i = 2; i <= n; i++) {
if (isPrimes[i]) {
for (int j = i * 2; j <= n; j += i) {
isPrimes[j] = false;
}
}
}
for (int i = m; i <= n; i++) {
if (isPrimes[i]) {
sb.append(i).append("\n");
}
}
System.out.println(sb);
}
}
'알고리즘 문제풀이 > 백준' 카테고리의 다른 글
[알고리즘/백준] 1978 소수 찾기(자바, 에라토스테네스의 체) (0) | 2021.09.24 |
---|---|
[알고리즘/백준] 1966 프린터 큐(자바) (0) | 2021.09.24 |
[알고리즘/백준] 1920 수 찾기(자바, 이진탐색, BinarySearch) (0) | 2021.09.23 |
[알고리즘/백준] 1018 체스판 다시 칠하기(자바) (0) | 2021.09.23 |
[알고리즘/백준] 1259 팰린드롬 수(자바) (0) | 2021.09.21 |
댓글