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

C言語で数列 2, 22, 222, 2222… の総和を求める方法

本記事では、数列「2, 22, 222, 2222, …」の総和(合計)を求めるC言語プログラムを紹介します。各項を一つずつ足し合わせる方法もありますが、数学的な公式を利用すれば、項数が多くなっても効率よく計算できます。

総和を求める公式の導出

この数列の総和は、以下のように式を変形していくことで求められます。

sum = 2 + 22 + 222 + 2222 + …(第n項まで)
    = 2 × (1 + 11 + 111 + 1111 + …)
    = (2/9) × (9 + 99 + 999 + 9999 + …)
    = (2/9) × {(10-1) + (100-1) + (1000-1) + …}
    = (2/9) × {(10 + 10^2 + 10^3 + … + 10^n) - n}
    = (2/9) × {10(10^n - 1)/9 - n}

これを整理すると、次のような閉じた形式の公式が得られます。

sum = 2 × (10^(n+1) - 10 - 9n) / 81

ここで活躍するのが等比数列の和の公式です。「10 + 102 + 103 + … + 10n」は初項10・公比10の等比数列なので、その和は 10(10n − 1)/9 と表せます。

C言語での実装例

上記の公式をそのままコードにすると、以下のようになります。

#include <stdio.h>
#include <math.h>

int main(void) {
    int n = 3;
    double sum = 2 * (pow(10, n + 1) - 10 - 9 * n) / 81;
    printf("sum is %.0f\n", sum);
    return 0;
}

実行結果

sum is 246

n = 3 の場合、数列は「2, 22, 222」となり、その合計は 2 + 22 + 222 = 246 です。プログラムの出力と一致していることから、正しく計算できていることが確認できます。

コードの解説

  • pow関数:math.h ヘッダーで宣言されているべき乗計算用の関数です。環境によっては、コンパイル時に数学ライブラリをリンクする -lm オプションが必要になります。
  • double型の使用:pow関数は double 型の値を返すため、変数 sum も double 型で宣言しています。
  • printfの書式指定子:浮動小数点数を出力する場合は %d ではなく %f 系の指定子を使います。整数のように表示したい場合は %.0f が便利です。

補足:ループで計算する別解

公式を使わず、反復処理で総和を求めることも可能です。各項は「前の項 × 10 + 2」で生成できるため、次のように書けます。

#include <stdio.h>

int main(void) {
    int n = 3;
    long long term = 0, sum = 0;
    for (int i = 0; i < n; i++) {
        term = term * 10 + 2;
        sum += term;
    }
    printf("sum is %lld\n", sum);
    return 0;
}

こちらの方法でも同様に「sum is 246」が出力されます。項数が大きくなると値が急激に増えて桁あふれを起こす可能性があるため、long long 型などの大きな整数型を使うか、公式ベースの方法と組み合わせるのが安全です。

  1. Windowsで使えるPython開発用IDEおすすめ7選|PyCharmからAtomまで徹底解説

    Windows環境でPythonの開発を始めるとき、最初に悩むのが「どのIDE(統合開発環境)を選ぶべきか」という問題です。IDEはコードの編集・実行・デバッグなどをひとつのアプリケーションで完結できる強力なツールであり、選択次第で開発効率が大きく変わります。 本記事では、Windowsで利用できる代表的なPython対応IDEを厳選し、それぞれの特徴やメリットをわかりやすく解説します。 PyCharm PyCharmはJetBrains社が開発する、Python開発で最も人気のあるIDEのひとつです。無料のコミュニティ版と有料のプロフェッショナル版が用意されており、初心者からプロフェッショ

  2. プログラミング用ノートPCの選び方|失敗しないスペックのポイントを徹底解説

    これからコーディングを学び始める初心者の方も、開発者としてキャリアを築いていく方も、いずれ「プログラミングに適したノートPC」が必要になるタイミングが訪れます。プログラミングといっても、Web開発、アプリ開発、ゲーム開発などさまざまな種類があり、それぞれ求められるツールや環境は異なります。だからこそ、自分のニーズに合った一台を選ぶための明確な基準を持つことが重要です。このガイドでは、プログラミングに最適なノートPCの選び方をわかりやすく解説します。 なぜプログラミング向けのノートPCを選ぶことが重要なのか? 確かに、ほとんどのノートPCである程度のコーディングは可能です。しかし、「作業ができ