簡體   English   中英

C中的總和,來自兩個數字

[英]Sum in C, from two numbers

我在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如何解決這個問題? 謝謝

您可以重復使用您的功能

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

當然你必須添加一些驗證。

為什么不呢?

 int sum_2_naturals(int n, int m){
    return (sum_naturals(m) - sum_naturals(n))
}

但是現在我想要一個可以從2個不同數字求和的公式,

要查找算術序列的一定數量項的總和:

#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

更多信息

看起來像一個簡單的任務,但由於你仍然無法理解它,為什么不先'定義'你的函數 - 在'編碼'它們之前。

Sn )= 0 + 1 + 2 + ... + n -1 = nn -1)/ 2

Fkn )= k + k +1 + ... + n -1 + n = - (0 + 1 + ... + k -1)+(0 + 1 + ... + k -1 )+ k + k +1 + ... + n -1 + n = - Sk )+ Sn )+ n = Sn +1) - Sk

當然,需要假設k <= n等。

我想所有混淆的原因是你定義了你的基本函數,從0到n -1,而不是1到n之和

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM