약수의 개수가 세 개 이상인 수를 합성수라고 합니다. 자연수 n이 매개변수로 주어질 때 n이하의 합성수의 개수를 return하도록 solution 함수를 완성해주세요.
n ≤ 100| n | result |
|---|---|
| 10 | 5 |
| 15 | 8 |
입출력 예 #1
입출력 예 #1
💡 문제풀이 과정
- 답안 1번:
합성수는 4부터 시작하기 때문에,for()반복문을 중복으로 사용하여i = 4부터, i ≤ n까지,j = 1부터, j는 i보다 작거나 같을 때까지로 반복문의 범위를 설정한다. 약수의 개수를 세기 위해count = 0을 변수로 선언 하여,if (i % j == 0) count++;하고, 만약count가 3이상되면 answer에 1씩 더해주어야 할 것이다.- 답안 2번: 마찬가지로 합성수는 4부터 시작하기 때문에,
for()반복문의i = 4 부터 시작하고 i ≤ n;까지이다.j = 2부터 시작 j < i 까지로 설정하였는데,i % j == 0인경우 answer에 1씩 더해준다.
- cf.
합성수
- 합성수는
약수의 개수가 3개 이상인 자연수로1보다 큰 자연수 중 소수가 아닌 수를 말한다.2를 제외한 모든 짝수는 합성수이다. (단, 합성수가 모두 짝수라는 것은 아니다)
✅ 답안 #1
function solution(n) {
let answer = 0;
for (let i = 4; i <= n; i++) {
let cnt = 0;
for (j = 1; j <= i; j++) {
if (i % j == 0) cnt++;
}
if (cnt >= 3) answer++;
}
return answer;
}
✅ 답안 #2
function solution(n) {
let answer = 0;
for (let i = 4; i <= n; i++) {
for (let j = 2; j < i; j++) {
if (i % j == 0) {
answer++;
break;
}
}
}
return answer;
}