-1

問題 5: 2520 は、1 から 10 までの各数値で割り切れる最小の数値です。

1 から 20 までのすべての数で割り切れる最小の正の数は?

解決策を試みる私のコード:

var x = 2520;
var div = 20;
var smallest = function(){
    while (div > 0){
        if (x%div ===0){
            div = div - 1;
            smallest();
        }
        else{
            x = x+1;
            div = 20;
            smallest()
        }
    };
    return x;
};
console.log(smallest());
4

1 に答える 1

1

答えは232792560です。この結果を得るには再帰が多すぎます。この場合、スタック オーバーフローは避けられません。反復ソリューションで十分な場合は、次を使用できます。

var smallest = function(_max) {
    var result = _max;
    for(var i = 1; i <= _max; i++) {
        if(result % i !== 0) {
            result++;
            i = 0;
        }
    }
    return result;
};

smallest(10); // => 2520
smallest(20); // => 232792560
于 2013-02-09T08:21:10.877 に答える