두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.
1 ≤ left ≤ right ≤ 1,000
left | right | result |
---|---|---|
13 | 17 | 43 |
24 | 27 | 52 |
다음 표는 13부터 17까지의 수들의 약수를 모두 나타낸 것입니다.
수 | 약수 | 약수의 개수 |
---|---|---|
13 | 1, 13 | 2 |
14 | 1, 2, 7, 14 | 4 |
15 | 1, 3, 5, 15 | 4 |
16 | 1, 2, 4, 8, 16 | 5 |
17 | 1, 17 | 2 |
따라서, 13 + 14 + 15 - 16 + 17 = 43을 return 해야 합니다.
// 약수 구하는 함수
function divisor(n) {
let count = 0;
for(let i =1; i <= n; i++) {
if(n % i === 0) count ++
}
return count;
}
function solution(left, right) {
let result = 0;
for(let i = left; i <= right; i++) {
let count = divisor(i)
if(count % 2 === 0) result += i
else result -= i
}
return result;
}
제곱근이 정수면 약수의 갯수는 홀수임을 이용하기.
ex) 9의 제곱근은 3. 9의 약수는 1, 3, 9이므로 홀수.
인자로 들어오는 값이 정수인지 아닌지를 판별함
function fits(x, y) { if (Number.isInteger(y / x)) { return 'Fits!'; } return 'Does NOT fit!'; } console.log(fits(5, 10)); // expected output: "Fits!" console.log(fits(5, 11)); // expected output: "Does NOT fit!"
function solution(left, right) {
let answer = 0;
for(let i = left; i <= right; i++) {
if(Number.isInteger(Math.sqrt(i))) answer -= i;
else answer += i
}
return answer;
}