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

C言語で最初のn個の自然数の3乗の和を計算するプログラム

最初のn個の自然数の3乗和とは、1からnまでのすべての自然数について、それぞれの値を3乗して合計するプログラムのことです。つまり、数列 1³ + 2³ + 3³ + … + n³ の総和を求める問題です。

入力:6
出力:441

計算の流れ

n = 6 の場合、以下のように各自然数を3乗して足し合わせます。

1³ + 2³ + 3³ + 4³ + 5³ + 6³ = 1 + 8 + 27 + 64 + 125 + 216 = 441

この計算は、forループを使って実装できます。ループで変数 i を1からnまで増加させながら、i の3乗(i × i × i)を順番に合計変数に加算していきます。

サンプルコード

#include <iostream>
using namespace std;
int main() {
    int n = 6;      // 自然数の上限
    int sum = 0;    // 合計を格納する変数
    
    // 1からnまで繰り返し処理を行う
    for (int i = 1; i <= n; i++) {
        sum += i * i * i;   // i の3乗を合計に加算
    }
    
    printf("%d", sum);  // 結果を出力
    return 0;
}

補足:数学的な公式による高速化

実は、この問題には有名な数学公式があります。

( n(n+1) / 2 )²

この公式を使うと、ループなしでO(1)の時間計算量で答えを求めることができます。例えば n = 6 の場合は、(6 × 7 / 2)² = 21² = 441 となり、先ほどの結果と一致します。大きな n を扱う場合は、こちらの公式の方が効率的です。

  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. 最初のn個の自然数の二乗和を求めるC++プログラムの解説

    はじめにこの記事では、最初のn個の自然数(1からnまで)の二乗和を求める方法について解説します。例えば、n = 4 の場合、計算結果は 1² + 2² + 3² + 4² = 1 + 4 + 9 + 16 = 30 となります。基本的なアプローチとしては、1からnまで繰り返すforループを使用し、各ステップで項の二乗を計算して合計に加算していく方法があります。このプログラムの計算量は O(n) です。しかし、O(1) の定数時間で解きたい場合は、次の級数の公式を利用できます。Σk² = n(n + 1)(2n + 1) / 6この公式を使えば、ループ処理を行わずに一発で答えを求めることが可能で