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)
这是作业吗?我感到有点内疚。
相关文章:
- 如何在JavaScript中使用此函数对范围内的所有数字求和
- JS:从数组中查找特定范围内的最低/最高数字
- 试图检查表单中的值是否为一个设定范围内的数字
- 检查数字是否在特定范围内
- 检查值是否在某个数字的范围内
- 数字在范围内的条件 - Titanium/Javascript
- 如何检查对象中的所有数字是否都在一定范围内
- Javascript - 在一定范围内生成随机数,不包括某些数字
- 增加Math.random中某个数字在一定范围内的机会
- 当数字在范围内时显示特定图像
- AngularJS中范围内的数字验证
- 如何获得 [0,1] 范围内的加密强数字
- 始终在 3K 数字范围内选择不同的数字
- 如何在任意范围内随机选择数字并使用 JavaScript 数组相加
- 检查字符串是否以范围内的数字开头
- Javascript验证-如何检查表单中输入的数字是否在一定范围内
- 将数字输入限制在范围内
- 检查数字范围内没有重复项的数字范围的最有效方法
- 检查数字是否在javascript范围内
- 检查JavaScript中的数字是否在Java中的int范围内(–2147483648<n<21474836