使用带标签continue时,质数筛选代码非质数输入无输出问题排查
质数判断代码的问题修复
核心问题:缺少输出语句
你的代码仅完成了质数结果的字符串拼接,但没有添加将结果展示出来的逻辑(比如console.log或alert),导致无论输入质数还是非质数,都看不到输出内容——这是你输入非质数时无输出的直接原因。补上输出语句即可解决:// 在代码末尾添加输出逻辑 console.log(prime); // 或者用弹窗展示 alert(prime);质数判断逻辑的优化与修正
- 1不是质数,你的代码错误地将其纳入结果列表,需要调整外层循环起始值或排除1的判断;
- 内层循环从j=1开始再跳过j=1完全冗余,直接让j从2开始循环更高效;
- 内层循环无需遍历到i-1,遍历到
Math.sqrt(i)即可——如果i是合数,必然存在一个因数小于等于自身的平方根,能大幅减少循环次数。
修复后的完整代码
const userNumber = +prompt('Insert number, please'); let prime = 'These are the primes under your number: '; outerLoop: for (let i = 2; i <= userNumber; i++) { // 从2开始,跳过非质数的1 if (i === 2 || i === 3) { prime += `${i} `; continue; } // 内层循环从2开始,到i的平方根结束 for (let j = 2; j <= Math.sqrt(i); j++) { if (i % j === 0) continue outerLoop; } prime += `${i} `; } console.log(prime); // 输出结果
内容的提问来源于stack exchange,提问作者M Codet
相关产品推荐
相关产品推荐

