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