약수의 개수가 세 개 이상인 수를 합성수라고 합니다. 자연수 n이 매개변수로 주어질 때 n이하의 합성수의 개수를 return하도록 solution 함수를 완성해주세요.
| n | result |
|---|---|
| 10 | 5 |
| 15 | 8 |
입출력 예 #1
10 이하 합성수는 4, 6, 8, 9, 10 로 5개입니다. 따라서 5를 return합니다.
입출력 예 #2
15 이하 합성수는 4, 6, 8, 9, 10, 12, 14, 15 로 8개입니다. 따라서 8을 return합니다.
class Solution {
public int solution(int n) {
int answer = 0;
for(int i=4; i<=n; i++){
for(int j=2; j<i; j++){
if (i % j == 0){
answer ++;
break;
}
}
}
return answer;
}
}
예시에서 보듯이 합성수는 항상 4부터 시작한다. 그래서 반복문을 사용할때도 n을 4부터 시작하였다.
그리고 약수의 개수는 1과 자기 자신을 제외한 2부터 약수가 되는지를 찾았다. 2이상의 수로 나누었을 때 나머지가 0일 경우 answer를 +1하고 break로 반복문을 빠져나오게 해서 갯수를 셌다.