我试图自己学习和练习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>
答案 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>
编辑:请考虑在发布前缩进代码。此外,作为编程的一般规则,它更好地命名函数,以唤起他们应该做的事情。 ..并使变量的范围尽可能小。 :)