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

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
    done
    return sum
end

サンプルコード

#include<stdio.h>
long cube_sum_n_natural(int n) {
    long sum = 0;
    int i;
    for (i = 1; i <= n; i++) {
        sum += i * i * i; // iの立方を計算してsumに加算
    }
    return sum;
}
main() {
    int n;
    printf("Enter value of n: ");
    scanf("%d", &n);
    printf("Result is: %ld", cube_sum_n_natural(n));
}

実行結果

Enter value of n: 6
Result is: 441

解説

上記のプログラムでは、関数cube_sum_n_naturalが引数として受け取ったnに対して、1からnまでの各整数iについて「i × i × i」を計算し、変数sumに累積しています。n = 6の場合、1 + 8 + 27 + 64 + 125 + 216 = 441となり、正しく立方和が求められていることがわかります。

なお、大きなnを扱う場合はオーバーフローに注意が必要です。int型では桁あふれが発生する可能性があるため、ここではlong型を使用しています。さらに大きな値を扱う場合は、long long型やunsigned long long型の使用も検討しましょう。

  1. 最初の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この公式を使えば、ループ処理を行わずに一発で答えを求めることが可能で

  2. 【Python】最初のn個の自然数の立方和を求めるプログラム

    本記事では、与えられた問題文を解決するための解法とアプローチについて詳しく解説します。 問題文 − 入力として n が与えられたとき、級数 1³ + 2³ + 3³ + 4³ + …… + n³ の第 n 項までの和を出力する必要があります。 ここでは、この問題を解決するための2つのアプローチを紹介します。 ループを使用した総当たり(ブルートフォース)アプローチ n 個の数の和に関する数学的な公式を利用した解法 アプローチ1:数値を反復処理して各項の和を計算する この方法では、1から n までの各数値を順番に取り出し、その立方値を累積していくことで合計を求めます。ロジックがシンプルで直感