-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 回答