簡體   English   中英

如何加快算法速度?

[英]How I can speed up my algorithm?

我正在解決一些問題,但無法解決這些問題。 我必須編寫一個代碼,在該代碼中用戶輸入一個十進制數字,在其他眾多系統中,我需要計算該數字以數字1開頭的次數。 這是算法:

for (int i = 3; i <= n; i++) {
    int z = n;
    while (z != 0) {
        x = z % i;
        z = z / i;
    }
    if (x == 1) {
        brOsnova++;
    }
}

代替循環,使用這個:

x = x - ((x / i) * i);
if (x == 1)
{
    ...
}

這僅適用於整數數學。

您可以通過不檢查要驗證的i來加速它

i <= n < 2*i因為它們都將滿足。 因此,僅檢查for(int i = 3; i <= n/2; ++i) ,然后將(n + 1)/ 2添加到最終的brOsnova

我確信它可以進一步加速,並且必須有一些O(log(n))算法,但是可能不那么理想……或者是algorithm標簽的一個很好的候選問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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