약수의 합

문제

정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.

제한조건

  • n은 0 이상 3000이하인 정수입니다.

풀이방향

  • 입력된 값의 약수를 구하고
  • 약수를 합계하여 리턴

입출력의 예


n return
12 28
5 6

문제풀이

sumOfDivisor.js
1
2
3
4
5
6
7
8
9
10
11
12
function sumOfDivisor(num) {
//약수의 합
let sum = 0;
for (let i = 1; i <= num; i++) {
if (num % i === 0) {
sum += i;
}
}
return sum;
}

export { sumOfDivisor };
sumOfDivisor.test.js
1
2
3
4
5
6
7
8
9
10
11
import { sumOfDivisor } from "../src/sumOfDivisor";

describe("sumOfDivisor", () => {
it("should return 28 as the sum of divisor of 12", () => {
expect(sumOfDivisor(12)).toBe(28);
});

it("should return 6 as the sum of divisor of 5", () => {
expect(sumOfDivisor(5)).toBe(6);
});
});

문제출처

  • 프로그래머스

다른 풀이

1
2
3
function solution(n, a=0, b=0) {
return n<=a/2?b:solution(n,a+1,b+=n%a?0:a);
}