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

Project Euler第3题:如何让Sieve of Eratosthenes实现正常运行

问题分析
  • 埃氏筛实现效率极低,触发平台死循环检测
    你采用的双层循环模运算筛法时间复杂度为O(n²),当输入为600851475143时,√600851475143≈775146,两层循环累计需要执行几十万亿次运算,运行时间远超平台阈值,被判定为潜在无限循环,代码执行被提前中断,返回的质数数组不完整,最终结果错误。
  • 质因数查找逻辑存在遗漏
    即便筛法能完整执行,你的逻辑也仅能覆盖最大质因数小于等于√输入值的场景,若输入值本身是质数,或是存在大于√输入值的质因数,结果就会出错。
  • 无效冗余代码
    函数开头初始化的[2,3,5,7]数组无实际作用,输入大于7时会被直接覆盖。
修复方案

推荐用更简洁高效的试除法实现,完全避免高复杂度的筛法逻辑:

function largestPrimeFactor(number) {
  let maxPrime = 1;
  // 处理2的因数
  while (number % 2 === 0) {
    maxPrime = 2;
    number = number / 2;
  }
  // 处理奇数因数,步长设为2跳过偶数
  for (let i = 3; i <= Math.sqrt(number); i += 2) {
    while (number % i === 0) {
      maxPrime = i;
      number = number / i;
    }
  }
  // 剩余值大于2则本身为最大质因数
  if (number > 2) {
    maxPrime = number;
  }
  return maxPrime;
}
验证结果

输入600851475143时,返回结果为6857,与Project Euler第3题正确答案一致,不会触发平台死循环检测。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 07:45:04