You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JS实现两数区间素数筛选始终返回空数组问题排查

素数筛选功能bug修复

已定位的问题点

  • isNumberPrime函数参数定义错误:接收的参数名写为flag,实际应该接收要判断的数值,且函数内部声明的number变量未赋值,始终为undefined,导致判断逻辑完全失效
  • 素数判断逻辑错误:原判断条件(number != 2 || number%2 === 0) || number === 1逻辑错误,会把唯一的偶素数2判定为非素数
  • 变量拼写错误:判断整除的分支里将flag错写为falg,导致变量赋值失效
  • 数组方法调用错误:looping函数里添加元素时写成allPrimes.push[i],push是数组方法,需要用小括号传参,即allPrimes.push(i)
  • 输入值类型错误:从input获取的value是字符串类型,未转为数字,循环判断时可能出现类型匹配问题

修复后的代码

JavaScript代码

function isNumberPrime(number) {
    // 小于等于1的数都不是素数
    if (number <= 1) return 0;
    // 2是唯一的偶素数
    if (number === 2) return 1;
    // 大于2的偶数都不是素数
    if (number % 2 === 0) return 0;
    // 只需要判断到平方根就能覆盖所有因数可能,优化性能
    for (let divider = 3; divider <= Math.sqrt(number); divider += 2) {
        if (number % divider === 0) {
            return 0;
        }
    }
    return 1;
}

function looping(lowerNumber, higherNumber) {
    let allPrimes = [];
    for (let i = lowerNumber; i <= higherNumber; i++) {
        if (isNumberPrime(i) == 1){
            allPrimes.push(i);
        }
    }
    return allPrimes;
}

function enterNumbers() {
    let input1 = document.getElementById("firstNumber");
    // 转为数字类型
    let lowerNumber = Number(input1.value);
    let input2 = document.getElementById("secondNumber");
    let higherNumber = Number(input2.value);
    let output = document.getElementById("output");
    output.innerText = 'All primes between ' + lowerNumber +' and ' + higherNumber + ' are: [' + looping(lowerNumber, higherNumber) + ']';
}

const button = document.querySelector('button');
button.addEventListener('click', enterNumbers)

HTML代码(无需修改)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
  <h1>Prime numbers</h1>
  <p>Type first number and second number:</p>
  <div>
    <input id="firstNumber" type="number" size="24" />
    <input id="secondNumber" type="number" size="24" />
    <button>Show primes</button> <br />
  <span id="output"></span>
  </div>
  <script src="primeNumber.js"></script>
</body>
</html>

内容的提问来源于stack exchange,提问作者M Alex

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 08:09:02