약수의 개수가 세 개 이상인 수를 합성수라고 합니다. 자연수 n
이 매개변수로 주어질 때 n
이하의 합성수의 개수를 return하도록 solution 함수를 완성해주세요.
n
≤ 100n | 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;
}