C中的总和,来自两个数字

时间:2015-09-22 15:54:42

标签: c

我在C中创建一个简单的程序,用户插入一个数字,例如5,程序总和直到5,0 + 1 + 2 + 3 + 4。我正在使用这个公式

int sum_naturals(int n){
    return (n-1)*n/2;
}

但是现在我想要一个可以从2个不同数字求和的公式,例如用户插入数字5和9,程序将执行5 + 6 + 7 + 8 + 9。

有人有ideia如何解决这个问题?感谢

3 个答案:

答案 0 :(得分:6)

您可以重复使用您的功能

int sum(int a, int b) {
  return sum_naturals(b) - sum_naturals(a-1)
}

当然你必须添加一些验证。

答案 1 :(得分:3)

  

但现在我想要一个可以从两个不同的数字中求和的公式,

要查找算术序列的一定数量项的总和:

#include <stdio.h>

static int sum_naturals(int a, int b)
{
    return ((b - a + 1) * (a + b)) / 2;
}

int main(void)
{
    printf("%d\n", sum_naturals(5, 9));
    return 0;
}

输出:

35

More info

答案 2 :(得分:0)

看起来像一个简单的任务,但由于你仍然无法理解它,为什么不先'定义'你的功能 - 在'编码'它们之前。

S n )= 0 + 1 + 2 + ... + n -1 = n 名词 -1)/ 2

F k n )= k + k +1 + ... + n -1 + n = - (0 + 1 + ... + k -1)+(0 + 1 + ... + k -1)+ k + k +1 + ... + n -1 + n = - S k )+ S n ) + n = S n +1) - S k )< / p>

当然,需要假设k <= n等

我想所有混淆的原因是你定义了你的基本函数,从0到 n -1,而不是1到 n 的总和。