Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

C言語で級数 1.2.3 + 2.3.4 + … + n(n+1)(n+2) の和を求める方法

この記事では、級数 1.2.3 + 2.3.4 + … + n(n+1)(n+2) の最初の n 項までの和を求める方法を解説します。ここで、1.2.3 が第1項、2.3.4 が第2項を表します。

まず、具体例を使って概念を確認しましょう。

入力: n = 5
出力: 420

計算の流れ

1.2.3 + 2.3.4 + 3.4.5 + 4.5.6 + 5.6.7 = 6 + 24 + 60 + 120 + 210 = 420

この級数の第 n 項は n(n+1)(n+2) で表されます(n = 1, 2, 3, …)。

= n(n² + 3n + 2) = n³ + 3n² + 2n

既知の和の公式

第 n 項が n の場合:和 = n(n+1)/2

第 n 項が n² の場合:和 = n(n+1)(2n+1)/6

第 n 項が n³ の場合:和 = n²(n+1)²/4

求める和の導出

上記の公式を組み合わせると、求める和は次のように計算できます。

n²(n+1)²/4 + 3 × n(n+1)(2n+1)/6 + 2 × n(n+1)/2

= n²(n+1)²/4 + n(n+1)(2n+1)/2 + n(n+1)

= n(n+1) { n(n+1)/4 + (2n+1)/2 + 1 }

= n(n+1) { (n² + n + 4n + 2 + 4)/4 }

= (1/4) n(n+1)(n² + 5n + 6)

= (1/4) n(n+1)(n+2)(n+3)

解法のアプローチ

この問題を解くには、大きく分けて2つの方法があります。

1つは数学の公式を利用する方法、もう1つはループを使う方法です。

方法1:数式を使う方法

この級数の和の公式はすでに導出済みなので、それをそのままコードに実装します。

アルゴリズム

入力:要素数 n

ステップ1:和を計算する
    sum = (1/4) { n(n+1)(n+2)(n+3) }
ステップ2:標準出力関数を使って sum を表示する

サンプルコード

#include <stdio.h>
#include <math.h>
int main() {
    float n = 6;
    float area = n*(n+1)*(n+2)*(n+3)/4;
    printf("The sum is : %f", area);
    return 0;
}

出力結果

The sum is : 756

方法2:ループを使う方法

もう1つの方法は、for ループで各項を順番に計算し、足し合わせていく方法です。直感的で理解しやすい実装です。

サンプルコード

#include <stdio.h>
#include <math.h>
int main() {
    float n = 6;
    int res = 0;
    for (int i = 1; i <= n; i++)
        res += (i) * (i + 1) * (i + 2);
    printf("The sum is : %d", res);
    return 0;
}

出力結果

The sum is : 756

まとめ

級数 1.2.3 + 2.3.4 + … + n(n+1)(n+2) の和は、公式 n(n+1)(n+2)(n+3)/4 を使えば O(1) で即座に求められます。一方、ループを使う方法は O(n) の計算量が必要ですが、ロジックが分かりやすく、級数の構造を直感的に理解できるのがメリットです。用途に応じて使い分けるとよいでしょう。

  1. C言語で等比数列の和を求めるプログラムの書き方【初心者向け解説】

    このプログラムでは、3つの入力値を受け取ります。1つ目は「a」(等比数列の初項)、2つ目は「r」(公比)、3つ目は「n」(和を求める項数)です。 等比数列とは、隣り合う項同士の比が常に一定である数列のことです。入力された「a」「r」「n」をもとに、a, ar, ar2, ar3, ar4, … という等比数列を生成し、その総和 a + ar + ar2 + ar3 + ar4 + … を計算します。 入力例1 a = 1 r = 0.5 n = 5 出力例1 1.937500 入力例2 a = 2 r = 2.0 n = 8 出力例2 510.000000 問題を解くためのアプローチ 入力値

  2. C言語でcos(x)級数の合計を計算するプログラム

    本記事では、角度 x と項数 n が与えられたときに、cos(x)級数の合計を求めるC言語プログラムを解説します。ここで、x は余弦(コサイン)を求める角度、n は cos(x) 級数に含める項の数を表します。cos(x)とはcos(x) は三角関数の一つで、角度 x に対する余弦の値を計算するために使用される関数です。単位円上では、角度 x における点の x座標が cos(x) の値に対応します。数式cos(x) は以下のように無限級数(マクローリン展開)で表すことができます。$$\cos (x) = \displaystyle\sum\limits_{k=0}^\infty \frac{(