簡體   English   中英

JavaScript算法性能-計算可被k整除的范圍內的數字數

[英]JavaScript Algorithm Performance - Count the number of numbers in a range divisible by k

我創建了一種算法,用於查找可被第三個數字k整除的范圍內的數字數量。 我得到了這個工作,但是在多項式時間而不是線性時間中

function divisibleCount(x, y, k) {
    var count = 0;
    for (var i = x; i <= y; i++) {
        if (i % k === 0) {
            count++;
        }
    return count;
}

參數如下

x: Start of range
y: End of range
K: Number is divisible by

問題絕對是for循環,它使這個多項式時間變長了。

我嘗試使用

for (var i = x; i <= k; i += k)

但是得到了錯誤的答案。

有什么辦法可以改善嗎?

O(1)。

像這樣:

Math.floor((y-1) / k) - Math.floor((x-1) / k)

說明:

Math.floor((x-1)/ k)是間隔前被k整除的數字數。

Math.floor((y-1)/ k)是直到間隔結束可被k整除的數字數。

對於正數應該正確,並且k>0。希望;)

編輯:我知道,您想在范圍內包含y。 好的,然后更改為:

Math.floor(y / k) - Math.floor((x-1) / k)

這是作業嗎? 我有點內。

暫無
暫無

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

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