function solution(n) {
let result = 0;
for (let i = 1; i <= n; i++){
if(n % i === 0){
result += i
}
}
return result;
}
function solution(n) {
let result = 0;
const sqrtOfN = Math.sqrt(n);
for (let i = 1; i <= sqrtOfN; i++) {
if (n % i === 0) {
result += i;
// 1) 제곱근의 값이 중복으로 들어가는 것을 방지하는 조건문
if (n / i !== i) {
result += n / i;
}
}
}
return result;
}
1부터 n까지 범위내의 모든 수로 n을 나눠보면서 0으로 나누어 떨어지는 수를 찾습니다
n의 약수를 구할 경우에는 반복문을 n번 반복합니다.
for (let i = 1; i <= n; i++){
if(n % i === 0){
result += i
}
}
n의 제곱근의 약수를 구하면 n의 약수를 구할 수 있는 원리를 이용한 풀이입니다
100의 약수를 확인해보면
[1, 2, 4, 5, 10, 20, 25, 50, 100]으로 100의 제곱근인 10을 기준으로 대칭을 확인할 수 있습니다.
- 1 x 100 = 100
- 2 x 50 = 100
- 4 x 25 = 100
- 5 x 20 = 100
const arr = [];
let sqrtofN = Math.sqrt(n);
for (let i = 1; i <= sqrtOfN; i++) {
if (n % i === 0) {
arr.push(i); // [1, 2, 4, 5, 10]
// 1) 제곱근 10의 값이 중복으로 들어가는 것을 방지하는 조건문
if (n / i !== i) {
arr.push(n / i); // [20, 25, 50, 100]
}
}
}
위 코드를 통해 [1, 2, 4, 5, 10, 20, 25, 50, 100] 100의 약수가 담긴 배열을 얻을 수 있습니다.