728x90
2960번: 에라토스테네스의 체
2, 4, 6, 8, 10, 3, 9, 5, 7 순서대로 지워진다. 7번째 지워진 수는 9이다.
www.acmicpc.net
이젠 자신있는 소수 문제 💪💪
에라토스테네스의 체는 소수를 빠르게 판별할 수 있는 알고리즘으로 원래의 에라토스테네스의 체는 소수의 배수만 지우는 구조로 구현되는데 이 문제는 소수까지 지우는 것으로 해결해야된다. 지워진 숫자는 continue
를 통해 넘어갈 수 있어 소수를 구하는데 있어 효율적인 방식이다.
import java.util.*;
class Main {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int n = s.nextInt();
int k = s.nextInt(); // k 번째 지우는 수
int count = 0; // 몇 번째로 지우는 지 count
int[] arr = new int[n + 1];
for (int i = 2; i <= n; i++) {
arr[i] = i;
}
for (int i = 2; i <= n; i++) {
for (int j = i; j <= n; j += i) {
if (arr[j] == 0) continue; // 지웠으면 패스
arr[j] = 0; // 지운다.
count++;
if (count == k) {
System.out.println(j);
return;
}
}
}
}
}
💡 참고
[Algorithm] 에라토스테네스의 체
에라토스테네스의 체 소수를 판별하는 알고리즘으로 소수들을 대량으로 빠르고 정확하게 구하는 방법이다. 에라토스테네스의 체는 가장 먼저 소수를 판별할 범위를 배열에 할당하고, 하나씩
gangintheremark.tistory.com
728x90
'Algorithm > Problem Solving' 카테고리의 다른 글
[BOJ] 2110번 공유기 설치 - JAVA(자바) (0) | 2023.09.14 |
---|---|
[BOJ] 1654번 랜선 자르기 - JAVA(자바) (0) | 2023.09.12 |
[BOJ] 2805번 나무 자르기 - JAVA(자바) (0) | 2023.09.12 |
[BOJ] 10825번 국영수 - JAVA(자바) (0) | 2023.08.07 |
[BOJ] 1002번 터렛 - JAVA(자바) (0) | 2023.08.03 |