计算java中某个范围内偶数的最简单方法是什么?

时间:2013-12-11 19:51:45

标签: java

计算无符号整数范围内偶数的最简单方法是什么?

一个例子:如果范围是(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;

}

这会有用吗?

3 个答案:

答案 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。