function isPrimeNum() {
var num = Number(prompt('请输入一个整数:'));
for (var i = 2; i < num; i++) {
if (num % i == 0) {
return '它不是素数';
}
}
return '它是素数';
}
alert(isPrimeNum());
作业要求是用户输入一个数,判断是否是素数,并弹出结果。
思路就是,看num变量除以1和自身之外的其他整数,余数是否为0。
如果其中有一个整数取余为0,代表能够被其他数整除,判断不是素数;
如果中间所有整数余数都不为0,代表不能被其他整数整除,判断是素数。
下面是之前写的错误代码。
function isPrimeNum() {
var num = prompt('请输入一个数:');
for (var i = 2; i < num; i++) {
if (num % i != 0) {
alert(num + '是素数');
} else {
alert(num + '不是素数');
}
}
}
isPrimeNum();
错误原因:
1. 没有return语句终止函数,导致输入一个数后,反复弹输出框。
2. 思路逻辑错误,不应该用num % i != 0 作为判断条件,也不应该用if else语句。
1~num自身那么多整数,肯定有取余不为0的,根本得不出结果。
但只需要被其中一个整数取余为0,就能直接判断不是素数。