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

Cプログラミングで級数 2、10、30、68、… の最初のN項の合計を求める方法

この級数の合計を求めるには、まず級数の規則性を分析することから始めましょう。

対象となる級数は次のとおりです。

2、10、30、68、…

n = 6 の場合
合計 = 462

級数の規則性を分析する

与えられた級数をよく観察すると、この級数は2つの級数の和で構成されていることがわかります。1つ目は自然数 n の級数、2つ目は自然数 n の3乗(立方数)の級数です。つまり、各項は次のように分解できます。

2, 10, 30, 68 = (1+1³), (2+2³), (3+3³), (4+4³)

したがって、級数全体の合計は次のように表すことができます。

sum = 2 + 10 + 30 + 68 … = (1 + 2 + 3 + 4 …) + (1³ + 2³ + 3³ + 4³ …)

この性質に基づけば、級数の合計を求める公式は、2つの級数それぞれの公式を足し合わせたものとして定義できます。

合計を求める数学的公式

上記の級数の最初のN項の合計を求める数学的公式は次のとおりです。

n*(n + 1)/2 + (n*(n + 1)/2)²

前半の n(n+1)/2 は自然数の和、後半の (n(n+1)/2)² は立方数の和を表しています。たとえば n = 6 の場合、6×7÷2 = 21 となり、21 + 21² = 21 + 441 = 462 が合計になります。

C言語での実装例

#include <stdio.h>
int main() {
   int n = 6;
   int sum = (n*(n + 1)/2) + (n*(n+1)/2)*(n*(n+1)/2);
   printf("the sum of series till %d is %d", n, sum);
   return 0;
}

出力結果

the sum of series till 6 is 462

このように、級数を2つの基本的な級数に分解して考えることで、ループ処理を使わずにO(1)の計算量で合計を効率的に求めることができます。

  1. C言語で等差数列(A.P.)の和を求めるプログラムの作成方法

    問題 等差数列(Arithmetic Progression:A.P.)の級数の和を求めるプログラムを作成します。ユーザーは実行時に「初項」「項の総数」「公差」の3つの値を入力する必要があります。 解法 等差数列とは、隣り合う2つの数の差(公差)が常に一定である数列のことです。ここでは、項の総数を Tn として扱います。 等差数列の和と第 n 項は、それぞれ以下の公式で求められます。 等差数列の和:Sn = n/2 × (2a + (n − 1) d) 第 n 項:Tn = a + (n − 1) d アルゴリズム 以下の手順に従って、等差数列の和を計算します。 ステップ1:変数を宣言する。

  2. C言語の関数の分類とは?引数と戻り値による4つのカテゴリを解説

    C言語における関数は、引数(ひきすう)の有無と戻り値(返り値)の有無という2つの観点から、以下の4つのカテゴリに分類できます。引数なし・戻り値なしの関数引数なし・戻り値ありの関数引数あり・戻り値なしの関数引数あり・戻り値ありの関数それぞれのカテゴリについて、サンプルコードと実行結果を交えながら詳しく見ていきましょう。1. 引数なし・戻り値なしの関数このタイプの関数は、呼び出し元からデータを受け取らず、計算結果も返しません。関数内で入力・処理・表示をすべて完結させるため、単純な処理に向いています。サンプルコード#include<stdio.h>main() {