You need to enable JavaScript to run this app. JavaScript统计1-60范围内质数总数的代码错误排查
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript统计1-60范围内质数总数的代码错误排查

问题分析与代码修复方案

现有代码错误原因

  • 内层循环逻辑无终止:判断到数字能被整除后没有跳出循环,会继续执行后续遍历逻辑,导致同一个数字多次输出结果
  • 输出与计数逻辑位置错误:将「是质数」的输出和计数逻辑写在了内层循环中,每遍历一次j就执行一次,出现重复计数、重复输出的问题
  • 边界值未处理:质数的定义是大于1的自然数,1本身不属于质数,现有代码没有过滤i=1的场景
  • 无合数标记逻辑:确认数字是合数后没有做标记,后续j的遍历仍然会重复判断,输出错误结果

修复后的完整代码

var totalPrimeNumber = 0;
// 直接从2开始遍历,排除1这个非质数
for(let i = 2; i <= 60; i++) {
    let isPrime = true; // 先默认当前数字为质数
    for(let j = 2; j < i; j++) {
        if(i % j == 0) {
            isPrime = false; // 能被整除说明是合数
            break; // 确认是合数后直接跳出内层循环,不需要继续判断
        }
    }
    // 内层循环全部遍历完成后,再统一输出结果、做计数
    if(isPrime) {
        console.log(i, "is a prime number");
        totalPrimeNumber += 1;
    } else {
        console.log(i, "is not a prime number");
    }
}
console.log("1到60的质数总数为:", totalPrimeNumber);

可选优化方案

如果要提升运行效率,内层循环的终止条件可以改为j <= Math.sqrt(i),因为如果i存在大于其平方根的因数,对应的另一个因数一定小于它的平方根,不需要重复遍历判断。

内容的提问来源于stack exchange,提问作者An Chi Lê

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 16:54:03