计算无符号整数范围内偶数的最简单方法是什么?
一个例子:如果范围是(0,4)那么它应该返回3.
我很难想出任何简单的方法。我提出的唯一解决方案涉及几个if语句。是否有一行简单的代码可以在没有if语句或三元运算符的情况下执行此操作。
public static int countEvens(int first, int last)
{
int count = 0;
for(int i = first; i <= last; i++)
count += i%2 == 0 ? 1 : 0;
return count;
}
这会有用吗?
答案 0 :(得分:3)
你需要
last / 2 - (first + 1) / 2 + 1
答案 1 :(得分:2)
这是一种方法:
从0到第一个数字的平均数是:
num_evens_first = (first/2 + 1)
从0到最后一个数字的平均次数为:
num_evens_last = (last/2 + 1)
如果第一个数字本身是偶数,则该范围内的均数将是这两个数字PLUS 1之间的差异。完全放在一起,你可以使用这个公式:
num_evens_last - num_evens_first + (first + 1)%2
或者一次全部:
(last/2 + 1) - (first/2 + 1) + (first + 1)%2
简化为:
last/2 - first/2 + (first + 1)%2
答案 2 :(得分:1)
如果您的范围内的数字是偶数,则其中包含n / 2个偶数。
如果是奇数,如果first
为奇数,则n / 2向下舍入;如果first
为偶数,则向下舍入n / 2。