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

最初のn個の奇数の2乗の総和を求める方法|公式とC言語の実装例

奇数の2乗の数列とは

最初のn個の奇数の2乗からなる数列とは、1から始まる奇数を順番に2乗して並べたものです。

この数列は次のように表されます。

1, 9, 25, 49, 81, 121…

また、各項が奇数の2乗であることを明示すると、次のようにも書けます。

12, 32, 52, 72, 92, 112

総和を求める数学的公式

この数列の総和は、次の公式を使うことで簡単に求められます。

sum = n(2n+1)(2n−1)/3 = n(4n2−1)/3

計算例

入力:N = 4
出力:sum = 84

解説

まず、各項を実際に足し合わせて確認してみます。

12 + 32 + 52 + 72 = 1 + 9 + 25 + 49 = 84

次に、公式に当てはめて計算します。

sum = 4×(4×42−1)/3 = 4×(64−1)/3 = 4×63/3 = 4×21 = 84

どちらの方法でも同じ結果が得られますが、繰り返し処理(ループ)を必要としない公式による方法の方が、時間計算量を大幅に抑えられるため、より効率的です。

実装例1:ループを使った方法(C言語)

#include <stdio.h>
int main() {
    int n = 8;
    int sum = 0;
    for (int i = 1; i <= n; i++)
        sum += (2*i - 1) * (2*i - 1);
    printf("The sum of square of first %d odd numbers is %d", n, sum);
    return 0;
}

出力

The sum of square of first 8 odd numbers is 680

この方法では、i番目の奇数が「2i−1」で表されることを利用し、for文でn回繰り返しながら2乗を加算していきます。時間計算量はO(n)です。

実装例2:公式を使った方法(C言語)

#include <stdio.h>
int main() {
    int n = 18;
    int sum = ((n*((4*n*n)-1))/3);
    printf("The sum of square of first %d odd numbers is %d", n, sum);
    return 0;
}

出力

The sum of square of first 18 odd numbers is 7770

公式を直接コードに組み込むことで、ループなしで一度の計算だけで答えが求まります。時間計算量はO(1)であり、nが大きくなっても計算時間は一定です。

まとめ

最初のn個の奇数の2乗の総和は、公式「n(4n2−1)/3」を使えばO(1)で求められます。ループを使う方法は直感的で理解しやすい一方、公式を使う方法は計算効率が非常に高いため、実務や競技プログラミングでは公式の活用が推奨されます。

  1. C言語で最初のn個の自然数の立方和を求めるプログラム

    この記事では、最初のn個の自然数(1からnまで)の立方和を求める方法について解説します。基本的なアプローチとしては、1からnまで繰り返すforループを1つ使い、各ステップでその項の立方を計算して合計に加算していきます。この方法の計算量はO(n)です。しかし、O(1)つまり定数時間でこの問題を解きたい場合は、以下の級数の公式を利用できます。1³ + 2³ + 3³ + … + n³ = {n(n+1)/2}²アルゴリズムcubeNNatural(n)begin sum := 0 for i in range 1 to n, do sum := sum + i^3

  2. Pythonで最初のn個の奇数の合計を求めるプログラム

    数値 n が与えられたとき、最初の n 個の正の奇数の合計を求めることを考えます。たとえば、入力が 7 の場合、出力は 49 になります。これは [1 + 3 + 5 + 7 + 9 + 11 + 13] = 49 となるためです。解決の手順この問題は、以下のステップに従って解くことができます。n が 0 と等しい場合は、0 を返します。変数を初期化します。sum := 1、count := 0、temp := 1count < n - 1 の間、次の処理を繰り返します。temp := temp + 2(次の奇数を生成)sum := sum + temp(合計に加算)count := c