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

等比数列の第N項を求めるCプログラム

本記事では、初項「a」、公比「r」、項数「n」が与えられたときに、等比数列の第n項を求めるCプログラムを紹介します。

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

等比数列とは

数学における等比数列とは、初項以降の各項が、前の項に一定の値(公比)を掛けることで得られる数列のことです。

例えば、「2, 4, 8, 16, 32...」という数列は、初項が2、公比が2の等比数列です。このとき n = 4 であれば、出力結果は16になります。

つまり、等比数列の第n項は以下のように表せます。

GP1 = a1
GP2 = a1 * r^(2-1)
GP3 = a1 * r^(3-1)
. . .
GPn = a1 * r^(n-1)

したがって、第n項を求める一般式は次のようになります。

GP = a × r^(n-1)

入力例と出力例

入力: A=1
      R=2
      N=5
出力: 数列の第5項は: 16
説明: 各項は 1, 2, 4, 8, 16 となるため、出力は16

入力: A=1
      R=2
      N=8
出力: 数列の第8項は: 128

解決のためのアプローチ

  • 初項A、公比R、および項数Nを受け取ります。
  • A × (int)(pow(R, N - 1)) を計算して第n項を求めます。
  • 計算結果を出力として返します。

アルゴリズム

開始
    ステップ1 → 関数 int Nth_of_GP(int a, int r, int n) 内で
        return( a * (int)(pow(r, n - 1)) ) を返す
    ステップ2 → 関数 int main() 内で
        変数 a を宣言し、1 を代入
        変数 r を宣言し、2 を代入
        変数 n を宣言し、8 を代入
        関数 Nth_of_GP(a, r, n) の戻り値を出力
終了

C言語による実装例

#include <stdio.h>
#include <math.h>
// 等比数列の第n項を返す関数
int Nth_of_GP(int a, int r, int n) {
    // 第n項は以下の式で求められる
    return( a * (int)(pow(r, n - 1)) );
}
// メインブロック
int main() {
    // 初項
    int a = 1;
    // 公比
    int r = 2;
    // 求めたい項数
    int n = 8;
    printf("The %dth term of the series is: %d\n", n, Nth_of_GP(a, r, n));
    return 0;
}

実行結果

The 8th term of the series is: 128

このように、pow関数を使って公比の(n-1)乗を計算し、それに初項を掛けるだけで、等比数列の任意の項を簡単に求めることができます。計算量もO(1)と非常に効率的なため、大きなnに対しても高速に動作します。

  1. 【C言語入門】等比数列の和を計算するプログラムの作り方

    本記事では、C言語を使って等比数列の和を計算するプログラムの作成方法を解説します。アルゴリズム、フローチャート、サンプルコード、実行結果まで順を追って説明するので、C言語の学習や繰り返し処理・べき乗計算の理解に役立ててください。 問題 キーボードから2つの整数 x(初項)と n(項数)を読み込み、次の等比数列の和を計算して出力するプログラムを作成します。 1 + x + x² + x³ + x⁴ + …… + xⁿ 計算後、x の値、n の値、および合計(sum) を画面に表示します。 なお、等比数列とは隣り合う項の比が一定となる数列のことです。この問題では各項を「x のべき乗」として表現し、

  2. C++で数列3、5、33、35、53…のN番目の項を求めるプログラム

    はじめにこのチュートリアルでは、数列「3、5、33、35、53…」のN番目の項を求めるC++プログラムについて解説します。この問題では、ある整数nが与えられます。私たちのタスクは、その数列におけるn番目の項を特定することです。数列の規則性まず、この数列がどのように構成されているのかを見てみましょう。1番目の項:32番目の項:53番目の項:33(1番目の項に「3」を付加)4番目の項:35(1番目の項に「5」を付加)5番目の項:53(2番目の項に「3」を付加)6番目の項:55(2番目の項に「5」を付加)つまり、奇数番目の項は「i/2 番目の項の末尾に3を付けた数」、偶数番目の項は「(i/2 − 1