【Cプログラミング】級数 2, 6, 12, 20, 30… の最初のN項の合計を求める方法
この級数の合計を求めるには、まず級数の規則性を分析することから始めましょう。
対象となる級数は次のとおりです。
2, 6, 12, 20, 30…
級数の分析
例
n = 6 の場合 合計 = 112 各項を分析すると、 (1+1), (2+4), (3+9), (4+16)... つまり、(1+12), (2+22), (3+32), (4+42)... この級数は、次の2つの級数に分解できます。 s1: 1, 2, 3, 4, 5… s2: 12, 22, 32, …
このように、各項は「自然数 n」と「その2乗 n2」の和で表されることがわかります。したがって、全体の合計は「自然数の和」と「2乗の和」をそれぞれ数学の公式で求めて足し合わせることで計算できます。
数学公式による合計の導出
Sum1 = 1 + 2 + 3 + 4 … → Sum1 = n * (n + 1) / 2 Sum2 = 12 + 22 + 32 + 42 … → Sum2 = n * (n + 1) * (2n + 1) / 6
最終的な合計は Sum = Sum1 + Sum2 となります。ループで一項ずつ加算する方法よりも、これらの公式を使う方が計算量が O(1) となり、はるかに効率的です。
C言語での実装例
#include <stdio.h>
int main() {
int n = 3;
int sum = ((n * (n + 1)) / 2) + ((n * (n + 1) * (2 * n + 1)) / 6);
printf("the sum series till %d is %d", n, sum);
return 0;
}出力結果
The sum of series till 3 is 20
このコードでは、n = 3 の場合、Sum1 = 3×4/2 = 6、Sum2 = 3×4×7/6 = 14 となり、合計は 6 + 14 = 20 です。実際に級数を確認すると 2 + 6 + 12 = 20 であり、正しく計算できていることがわかります。
-
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() {