[英]Why is my Sieve so slow in JavaScript?
我已經在Stackoverflow和其他地方查看了其他Sieve的實現,但在我的產品中並沒有看到很大的不同,但是它們似乎可以大規模使用。 我知道我的工作正常,但問題是當數量增加時。 一旦點擊這些,就會使網頁崩潰。
/* My sieve of eratosthenes*/
function sieve(lim){
var squareLimit=Math.sqrt(lim);
var sArr=[];
for(i=2;i<lim;i++)
sArr[i]=true;
for(var i=2;i<squareLimit;i++){
if(sArr[i]){
for (var j=i;j<lim;j++){
sArr[i*j]=false;
}
}
}
}
好的,除了添加部分外,我進行了提及的更改,我不太明白。
修復后,我達到了所需的速度,然后在項目歐拉中解決了問題7。 好極了 :)
好的,我看到了問題:
for (var j=i;j<lim;j++){
sArr[i*j]=false;
}
應該是:
for (var j = i + i; j < lim; j += i) {
sArr[j] = false;
}
您只需要在內部循環中迭代到最大限制。 您的代碼只是檢查“ j”,而不是“ j * i”。 注意,我也消除了乘法。 那應該節省一些時間。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.