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

C言語で等差数列(AP)の第n項を求めるプログラムの書き方

初項「a」、公差「d」、項数「n」が与えられたとき、その等差数列の第n項を求めるのが本記事の課題です。

プログラムの書き方を解説する前に、まず「等差数列」とは何かを確認しておきましょう。

等差数列(Arithmetic Progression)とは?

等差数列(算術数列)とは、隣り合う2つの項の差が常に一定である数列のことです。この一定の差を「公差」と呼びます。

例えば、初項 a = 5、公差 d = 1 とし、求めたい項が第3項(n = 3)だとします。この場合、数列は「5, 6, 7」となり、出力すべき値は 7 です。

第n項を求める公式

等差数列の各項は次のように表せます。

AP1 = a
AP2 = a + (2-1) * d
AP3 = a + (3-1) * d
...
APn = a + (n-1) * d

これを一般化すると、第n項を求める公式は次のようになります。

AP = a + (n − 1) × d

入出力例

入力: a=2, d=1, n=5
出力: 6
説明: 数列は 2, 3, 4, 5, 6 となるため、第5項は 6

入力: a=7, d=2, n=3
出力: 11

解決のためのアプローチ

  • 初項 A、公差 D、項数 N を受け取る。
  • 公式「A + (N − 1) × D」を使って第N項を計算する。
  • 計算結果を出力として返す。

アルゴリズム

開始
    ステップ1 → 関数 int nth_ap(int a, int d, int n) 内で
        (a + (n - 1) * d) を返す
    ステップ2 → int main() 内で
        入力値 a=2, d=1, n=5 を宣言・初期化する
        関数 nth_ap(a, d, n) を呼び出した結果を表示する
終了

C言語プログラム

#include <stdio.h>
int nth_ap(int a, int d, int n) {
    // 公式を使って第n項を求める
    // t(n) = a(1) + (n-1)*d
    return (a + (n - 1) * d);
}
// main関数
int main() {
    // 初項
    int a = 2;
    // 公差
    int d = 1;
    // 求めたい項数 n
    int n = 5;
    printf("The %dth term of AP :%d\n", n, nth_ap(a,d,n));
    return 0;
}

実行結果

The 5th term of the series is: 6

このように、等差数列の第n項はたった一つの公式「a + (n − 1) × d」で簡単に求められます。ループで順に足し合わせる方法(O(n))と比べて、この公式を使えばO(1)で計算できるため、非常に効率的です。

  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{(