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

JavaScript编写求数字因数存入数组的函数返回错误,如何修复?

代码问题排查与实现方案

现有代码错误点

  • 提前终止函数执行:你在if分支内写了return factorNumbers.push(i),首先push()方法的返回值是数组新增元素后的长度,同时return会直接中断函数运行,第一次找到因数就停止遍历,既不会继续查找其余因数,也不会返回完整的因数数组。
  • 循环变量污染全局作用域:for(i = 1; i < numbers; i++)中的i没有声明,会自动成为全局变量,可能影响其他代码逻辑。
  • 无最终返回值:循环正常执行结束后,没有返回收集好的因数数组,函数默认返回undefined。
  • 函数命名语义模糊:原函数名findNumbers无法体现查找因数的功能,建议调整为findFactors提升可读性。

修正后的因数查找函数

function findFactors(number) {
  let factorNumbers = [];
  // 声明局部循环变量
  for(let i = 1; i < number; i++) {
    if(number % i === 0) {
      factorNumbers.push(i);
    }
  }
  // 循环结束后返回完整因数数组
  return factorNumbers;
}

完美数判断逻辑实现

你需要实现的「所有因数之和减去数字本身等于该数字」的判断,对应数学中的完美数判定,实现代码如下:

function isPerfectNumber(num) {
  // 小于2的数不可能是完美数,提前判断优化性能
  if(num < 2) return false;
  const factors = findFactors(num);
  const sum = factors.reduce((total, curr) => total + curr, 0);
  return sum === num;
}

内容的提问来源于stack exchange,提问作者Ivan Cheng

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 08:06:04