薬水の和

4810 ワード

問題の説明


整数nを受け入れ、nのすべての約数加算値を返す関数は、解を完了してください.

せいげんじょうけん

nは0または3000以下の整数です.

I/O例


nreturn122856

I/O例説明


I/O例#1
12の約数は1,2,3,4,6,12である.合わせて28です.
I/O例#2
5の約数は1,5です.これらを合わせると6です.

私の答え


function solution(n) {
    let result = []
    for(let i = 0; i <= Math.floor(Math.sqrt(n)); i++){
        if(n % i === 0){
            result.push(i)
            if(i * i < n) {
                let j = n / i
                result.push(j)
            }
        }
    }
    return result.reduce((acc, cur) => {
        return acc + cur
    }, 0)
}

他人を解く

function solution(num) {
    let sum = 0;
    for (let i = 1; i <= num; i++) {
        if (num % i === 0) sum += i
    }
    return sum
}
アルゴリズムで似たような解答をしたのを覚えているので、それを適用してみましたが、考えすぎたと思います.