📌  相关文章
📜  计算给定范围内的偶数总和(1)

📅  最后修改于: 2023-12-03 15:12:05.175000             🧑  作者: Mango

计算给定范围内偶数总和

在编程中,经常会需要计算给定范围内的偶数总和。这个过程中可能会涉及到一些循环、条件语句等等。在此,我们介绍几种实现方式。

方法一: 循环遍历判断

这是最朴素、最简单的实现方式,即使用循环遍历给定范围内的所有数,判断每个数是否为偶数,若是,则将其加入总和中。代码如下:

def sum_even(start, end):
    total = 0
    for num in range(start, end+1):
        if num % 2 == 0:
            total += num
    return total

该函数接受两个参数,分别为范围的起点和终点,返回给定范围内所有偶数的总和。

注意:在 for 循环中,为了确保包含最后一个数的值,需要将终点参数加1。

方法二: 直接计算

另一种实现方式是,直接计算给定范围内的偶数总和。设范围内有 n 个数,则偶数总数为 n // 2 ,然后乘以 2 就得到了总和。代码如下:

def sum_even(start, end):
    count = end // 2 - (start - 1) // 2
    return count * 2

该函数同样接受两个参数,返回给定范围内所有偶数的总和。

其中,(start - 1) // 2 表示 start 之前的偶数个数(若 start 为偶数,则该值等于 start / 2 - 1,否则该值等于 start // 2),end // 2 表示 end 之前的偶数个数,两者相减得到范围内偶数的总数。

方法三: 利用公式

还有一种更高效的实现方式是,利用等差数列的求和公式。偶数的等差数列为 2, 4, 6, ……,其公差为 2,最后一项为 end // 2 * 2 ,则总和为:

sum = (2 + end // 2 * 2) * ((end // 2 + 1) // 2)

代码如下:

def sum_even(start, end):
    count = (2 + end // 2 * 2) * ((end // 2 + 1) // 2)
    if start % 2 == 0:
        count -= (2 + start // 2 * 2) * ((start // 2 + 1) // 2)
    else:
        count -= (start + 1) // 2 * ((start + 1) // 2)
    return count

该函数同样接受两个参数,返回给定范围内所有偶数的总和。

注意:在计算范围内偶数总和时,需要判断起点是否为偶数,如果是,需要将起点之前的偶数总和减去。为了避免出现小数,我们需要使用地板除法。

以上三种方法都可以实现给定范围内偶数总和的计算。在实际使用中,可以根据数据情况选择最适合的方法。