약수의 개수가 세 개 이상인 수를 합성수라고 합니다. 자연수 n이 매개변수로 주어질 때 n이하의 합성수의 개수를 return하도록 solution 함수를 완성해주세요.
function solution(n) {
let count = 0;
while (n > 0) {
let temp = 0;
for (let i = 1; i * i <= n; i++) {
if (n % i === 0) {
temp++;
if (n / i !== i) temp++;
}
}
if (temp >= 3) count++;
n--;
}
return count;
}
합성수를 구할 때 사용했던 공식은 약수를 구할 때 사용했던 공식과 동일하다.
코딩테스트에서 약수와, 최대공약수들을 구할 일이 있을지도 모르니 알아두는 것도 좋을 것 같다. 그리고 Math함수를 사용해서 n을 계산하는 것보다 i를 곱해서 계산하는 것이 프로그램의 성능부문에 있어서 좋아서 i를 곱해서 계산하였다.