飲歌長嘯
2022-12-22 15:13:45
我在理解我遇到的這個問題時遇到了問題。我正在嘗試找到用于生成此數(shù)字992,474,117的質(zhì)數(shù)為此,我應(yīng)用了以下代碼: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)當(dāng)我運行這段代碼時,我得到一個>>致命錯誤:無效的表大小分配失敗 - JavaScript 堆內(nèi)存不足<<我看到了一些解決方案,我必須在其中應(yīng)用更大的舊空間大小node --max-old-space-size=4096 yourFile.js但仍然沒有任何效果??赡苁鞘裁磫栴}?怎么理解呢?感謝幫助
1 回答

catspeake
TA貢獻(xiàn)1111條經(jīng)驗 獲得超0個贊
您應(yīng)該在開始時將數(shù)組初始化
primes
為空數(shù)組您只需要循環(huán)到數(shù)字的平方根。
一旦你找到一個質(zhì)因數(shù),就繼續(xù)用它除以這個數(shù),直到它不能再被整除為止,這樣就不需要
store
數(shù)組了。
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));
添加回答
舉報
0/150
提交
取消