繁体   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