我有一个简单的家庭作业:编写一个脚本,打印从1到N的所有数字,这些数字不能同时被3和7整除。
所以,这是我的解决方案。它的工作方式 - 它打印所有除以3或7而不是3 AND 7的数字。请帮助我理解为什么这不能正常工作。这是代码:
<!DOCTYPE html>
<html>
<head>
<title>Loops - Task 2</title>
<link href="js-console.css" rel="stylesheet" />
</head>
<body>
<label for="input_num">Start: </label>
<input type="text" id="input_num" />
<a href="#" id="btn" onclick="printNums()">Print numbers</a>
<div id="js-console"></div>
<script src="js-console.js"></script>
<script>
var input_num;
var counter;
function printNums(){
input_num = jsConsole.readInteger("#input_num");
for (counter=1; counter<=input_num; counter++){
if(counter % 3 !=0 && counter % 7 != 0){
jsConsole.writeLine(counter);
}
}
}
</script>
</body>
</html>
答案 0 :(得分:2)
为了被两者整除,使用mod 21将返回0.这显示在21,42,63等中。
if(counter % 21 != 0){
修改强>
<!DOCTYPE html>
<html>
<head>
<title>Loops - Task 2</title>
<link href="js-console.css" rel="stylesheet" />
</head>
<body>
<label for="input_num">Start: </label>
<input type="text" id="input_num" />
<a href="#" id="btn" onclick="printNums()">Print numbers</a>
<div id="js-console"></div>
<script src="js-console.js"></script>
<script>
var input_num;
var counter;
function printNums(){
input_num = jsConsole.readInteger("#input_num");
for (counter=1; counter<=input_num; counter++){
if(counter % 21 != 0){
jsConsole.writeLine(counter);
}
}
}
</script>
</body>
</html>
mod(%
)的工作方式是它将为你提供除法的其余部分。如果均匀划分4/2 = 2而没有任何遗留。但是,5/2将返回2仍然有1个余数。 2分为4次,2次均匀,剩下1次因此:4%2 = 0
5%2=1
因为你说它不能同时被3和7分割,你可以将两个数字叠加在一起使用mod和第一个可分为3和7的数字是21。
答案 1 :(得分:1)
答案 2 :(得分:1)
如果我正确理解了作业,你想要打印出不会除以3和7的数字,但可以除以一个或不能除以它们。 IE 3和7将打印出来,因为它们可以被一个而不是另一个打印,但21不会打印,因为它除以两者。
在这种情况下,逻辑应该是:
if(!((counter%3)== 0&amp;&amp;(counter%7)== 0))
答案 3 :(得分:0)
if((counter % 3) !=0 && counter % 7 != 0)
应该是:
if (!( (counter % 3) ==0 && counter % 7 ==0))
或者只是选择21提示......
答案 4 :(得分:0)
if(counter%3!= 0&amp;&amp; counter%7!= 0)
这意味着如果number可以除以3,则counter%3!=0
为false,因此condition为false。
(与7相同)。