为了账号安全,请及时绑定邮箱和手机立即绑定

如何解决 JavaScript heap out of memory on prime

如何解决 JavaScript heap out of memory on prime

饮歌长啸 2022-12-22 15:13:45
我在理解我遇到的这个问题时遇到了问题。我正在尝试找到用于生成此数字992,474,117的质数为此,我应用了以下代码:function primeFactorsTo(max){    var store  = new Array(max), i, j, primes = new Array(max);    for (i = 2; i <= max; ++i)     {        if (!store [i])           {            primes.push(i);            for (j = i << 1; j <= max; j += i)             {                store[j] = true;            }        }    }    return primes;}primeFactorsTo(992474117)当我运行这段代码时,我得到一个>>致命错误:无效的表大小分配失败 - JavaScript 堆内存不足<<我看到了一些解决方案,我必须在其中应用更大的旧空间大小node --max-old-space-size=4096 yourFile.js但仍然没有任何效果。可能是什么问题?怎么理解呢?感谢帮助
查看完整描述

1 回答

?
catspeake

TA贡献1111条经验 获得超0个赞

  1. 您应该在开始时将数组初始化primes为空数组

  2. 您只需要循环到数字的平方根。

  3. 一旦你找到一个质因数,就继续用它除以这个数,直到它不能再被整除为止,这样就不需要store数组了。

function primeFactorsTo(max)

{

    var primes = [];

    for (i = 2; i * i <= max; ++i) 

    {

        if(max % i === 0){

          primes.push(i);//found prime factor

          while(max % i === 0) max /= i;

        }

    }

    if(max > 2) primes.push(max);//largest prime factor

    return primes;

}


console.log(primeFactorsTo(992474117));


查看完整回答
反对 回复 2022-12-22
  • 1 回答
  • 0 关注
  • 84 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号