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