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

自然数の合計を計算するC++プログラム:forループと公式の2つの方法を解説

自然数とは、1から始まる正の整数のことです。自然数の列は以下のように続きます。

1, 2, 3, 4, 5, 6, 7, 8, 9, 10……

最初のn個の自然数の合計は、forループを使う方法と、数学の公式を使う方法の2通りで求めることができます。それぞれの方法によるプログラムを以下に示します。

forループを使って自然数の合計を求める

forループを使用してn個の自然数の合計を計算するプログラムは次のとおりです。

サンプルコード

#include<iostream>
using namespace std;
int main() {
    int n=5, sum=0, i;
    for(i=1;i<=n;i++)
    sum=sum+i;
    cout<<"Sum of first "<<n<<" natural numbers is "<<sum;
    return 0;
}

実行結果

Sum of first 5 natural numbers is 15

このプログラムでは、forループが1からnまで繰り返されます。ループの各反復処理において、変数iの値がsumに加算されていきます。これにより、最初のn個の自然数の合計が求められます。該当する部分のコードは以下のとおりです。

for(i=1;i<=n;i++)
sum=sum+i;

公式を使って自然数の合計を求める

最初のn個の自然数の合計を求める公式は次のとおりです。

sum = n(n+1)/2

この公式は、ガウスの方法としても知られており、ループ処理を行わずにO(1)の計算量で合計を求められるため、大きなnに対しても高速に動作します。

上記の公式を使ってn個の自然数の合計を計算するプログラムは以下のとおりです。

サンプルコード

#include<iostream>
using namespace std;
int main() {
    int n=5, sum;
    sum = n*(n+1)/2;
    cout<<"Sum of first "<<n<<" natural numbers is "<<sum;
    return 0;
}

実行結果

Sum of first 5 natural numbers is 15

このプログラムでは、公式を使って最初のn個の自然数の合計を一度に計算し、その値を出力しています。該当する部分のコードは以下のとおりです。

sum = n*(n+1)/2;
cout<<"Sum of first "<<n<<" natural numbers is "<<sum;

まとめ

どちらの方法でも同じ結果が得られますが、forループを使う方法は計算量がO(n)であるのに対し、公式を使う方法はO(1)で済むため、パフォーマンスの観点では公式を使う方法が優れています。ただし、ループ処理の学習や各ステップの動作確認にはforループを使った方法が適しています。用途に応じて使い分けるとよいでしょう。

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