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