1부터 자연수 N까지의 소수를 확인할때 사용하기 용이한 공식이다.
이중반복문을 피하여 소수를 구할 수 있기 때문에 효율성에서 많은 이점이있다.
자연수 N+1의 크기를 가지는 배열을 만들어 2부터 반복문을 실행하여
배열의 데이터가 0(소수)라면 해당 수의 배수를 모두 1로 변경하여 소수에서 제외 시킨다.
ex) 자연수 N 까지의 소수의 총 개수를 구한다.
public static int solution(int n) {
int[] arr = new int[n+1];
int answer = 0;
for (int i = 2; i <= n; i++) {
if(arr[i] == 0) {
answer++;
for (int j = i; j <=n; j =j +i) {
arr[j] = 1; // j=j+i(j의 배수)
}
}
}
return answer;
}
'알고리즘' 카테고리의 다른 글
[알고리즘] Sliding window (0) | 2022.06.01 |
---|---|
[알고리즘] two pointers (0) | 2022.06.01 |
[알고리즘] 다양한 정렬 알고리즘 (0) | 2022.04.28 |
[알고리즘] 숫자를 뒤집기 (0) | 2022.04.06 |
[프로그래머스] 모의고사 (0) | 2022.03.04 |
댓글