카테고리 없음
5. 소수(에라토스테네스 체)
jeoniee
2024. 10. 13. 02:50
728x90
반응형
문제
참고
에라토스테네스의 체
Sieve of Eratosthenes 고대 그리스의 수학자 에라토스테네스 가 만들어 낸 소수 를 찾는 방법.
namu.wiki
코드
이 문제는 에라토스테네스의 체를 이용해 간단히 풀었다.
public class Solution {
public static void solution(int a) {
int[] arry = new int[a + 1];
//0과 1은 소수가 아니므로 0
arry[0] = arry[1] = 0;
int cnt = 0;
//2부터 소수를 구하고자 하는 구간의 수를 배열에 담아준다.
for (int i = 2; i <= a; i++) {
arry[i] = i;
}
for (int i = 2; i < a; i++) {
if (arry[i] == 0) continue;
//소수의 배수들을 0으로 만들어준다.
for (int j = i * 2; j <= a; j += i) {
arry[j] = 0;
}
}
//소수의 개수를 cnt++;
for (int i = 0; i < arry.length; i++) {
if (arry[i] != 0) cnt++;
}
System.out.println(cnt);
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
solution(a);
}
}
728x90
반응형