簡體   English   中英

為什么我的Sieve用JavaScript這么慢?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM