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