找到最小的倍数

时间:2014-08-07 15:40:57

标签: javascript logic

我试图自己学习和练习javascript,但我已经取得了一些进展,但我仍然可能遇到基本问题。我认为我的代码非常接近给我正确答案,但我没有看到我错过了什么问题。如果有人更喜欢编码,请花一点时间让我知道我有什么逻辑错误,我将非常感激!

<script>

//2520 is the smallest number that can be divided by each of the numbers from 1 to         10 without any remainder.

var input = 11;

function smallestMultiple(){
    for(var i = 2; i <= 10; i++){
        if(input % i === 0 && isDivisible(input))
            alert(input);//this should only alert when input is divisible by all numbers between 2 and 10   
        }else{
            input ++;
//if input isn't divisible by all numbers between 2 and 10, increment input by 1        
        }
    }
};

// The following function should return true when "input" is divisible by 10, which is the trigger for alerting "input"

function isDivisible(input){

    if(input % 10 === 0){

        return true;

    }else{

        return false;

    }
};

smallestMultiple();



</script>

1 个答案:

答案 0 :(得分:0)

您的脚本将在2,3,...,9中找到可分割的最小整数10和 a 数字,这不是您需要的。

更快的实现可能会设置一些缩小的临时除数,直到左边超过右边... ...

最简单的只是在1,2,3...,9中选择一个数字,然后尝试将其除以1,2,3...,9

中的每个数字

以下html 沙箱(保留主题)可能会帮助您理解。

<html>
<head>
    <meta charset="utf8">
</head>
<body>

    <div>
        <p class="output"></p>
    </div>

    <script>
    window.onload = function() {

        function smallest_shared_multiple(from, to) {
            var tmp_divisor = from
            var tmp_candidate = tmp_divisor

            for(;tmp_divisor < to +1;) {
                if (tmp_candidate % tmp_divisor) {
                    tmp_divisor = from
                    tmp_candidate++
                } else {
                    tmp_divisor++
                }
            }

            return tmp_candidate                                       
        }

        document.querySelector('p.output').innerHTML =
            'For the given range, the smallest shared multiple is ' +
            smallest_shared_multiple(1, 10)

    }
    </script>
</body>
</html>

编辑:请考虑在发布前缩进代码。此外,作为编程的一般规则,它更好地命名函数,以唤起他们应该做的事情。 ..并使变量的范围尽可能小。 :)