【发布时间】:2020-04-29 21:32:43
【问题描述】:
为什么以下不能准确记录一个数字是否为素数?
function isPrime2(num) {
for(let i = 2; i < num; i++) {
if(num % i === 0) {
return console.log(false); break;
} else{return console.log(true)}
}
}
isPrime2(33) 返回真,即使它是一个素数。
如果 i = 2,则控制台将记录 true,因为 33/2 = 16.5 但是由于循环没有结束,下一个 i 的值是 i=3, 那么控制台不应该记录为假,然后完全跳出循环,让最终答案为假吗?
【问题讨论】:
-
33 不是质数。
-
return console.log(false)不是返回false的方式。你应该:console.log(false); return false;。无需break,因为return false将具有相同的效果。与return console.log(true)相同。试试console.log(true); return true;。
标签: javascript function loops if-statement