문제) 입력 받은 n개까지의 소수의 개수를 구하시오. (1은 소수 X)
응용) 소수의 합을 구하시오, 소수를 전부 출력하시오
소수의 개수를 구하는 방식은 간단하며 여러개의 방법이 있다.
처음에는 안에 있는 for문을 for(int j = 2; j <= i; j++)로 사용하여 if(i % j == 0)일 경우, Count를 해주어서 구하였었다.
하지만 이와 같은 방법은 개수를 구할 수는 있었지만 모든 값들을 다 계산하여야 하기에 효율성이 떨어진다고 생각하여 더욱 효율적인 방법이 있을지 고민을 해보았다.
그 결과 아래와 같이 수정하였다. (Math.sqrt()는 루트 값을 구하는 함수)
(학생 때 수학 좀 열심히 공부할걸....)
public int solution(int n) {
int answer = 0;
for(int i = 2; i <= n; i++) {
boolean isPrime = true;
for(int j = 2; j <= Math.sqrt(i); j++) {
if(i % j == 0) {
isPrime = false;
break;
}
}
if(isPrime) {
answer++;
}
}
return answer;
}
'프로그래밍 > 알고리즘' 카테고리의 다른 글
보간 탐색(Interpolation Search)이란? (0) | 2017.10.19 |
---|---|
이진 탐색(Binary Search)이란? (0) | 2017.10.18 |
순차 탐색(Sequential Search)이란? (0) | 2017.10.18 |
탐색(Search)이란? (0) | 2017.10.18 |
선택 정렬(Selection Sort) (0) | 2017.10.08 |
WRITTEN BY
- 김치치즈스마일
세계정복!
,