C言語で最初のn個の自然数の二乗和を求める方法
最初のn個の自然数の二乗和とは、1からnまでの各整数をそれぞれ2乗し、その合計を求めたものです。
入力 − 5
出力 − 55
説明 − 12 + 22 + 32 + 42 + 52 = 55
この二乗和を求める方法は主に2つあります。1つはループ処理を使う方法、もう1つは数学の公式を使う方法です。それぞれ詳しく見ていきましょう。
方法1:ループを使って求める
for文で1からnまで順に数値を取り出し、それぞれの2乗を計算して合計用の変数に加算していきます。処理の流れが直感的で理解しやすいのが特徴です。
サンプルコード
#include <iostream>
using namespace std;
int main() {
int n = 5;
int sum = 0;
for (int i = 1; i <= n; i++)
sum += (i * i);
cout << "最初の" << n << "個の自然数の二乗和は " << sum;
return 0;
}実行結果
最初の5個の自然数の二乗和は 55
方法2:数学の公式を使って求める
プログラムへの負荷を軽減したい場合は、数学の公式を活用するのがおすすめです。最初のn個の自然数の二乗和は、次の公式で一度に求められます。
n(n+1)(2n+1) / 6
ループを使う方法の計算量がO(n)であるのに対し、公式を使えばO(1)で計算できるため、nが大きくなっても高速に処理できます。
サンプルコード
#include <stdio.h>
int main() {
int n = 10;
int sum = (n * (n + 1) * (2 * n + 1)) / 6;
printf("最初の%d個の自然数の二乗和は %d", n, sum);
return 0;
}実行結果
最初の10個の自然数の二乗和は 385
まとめ
学習目的や小さなnの計算であればループによる実装でも問題ありませんが、実用的な場面では公式を使った実装が効率的です。なお、nが大きな値になる場合はint型のオーバーフローに注意し、必要に応じてlong long型などのより大きなデータ型を使用してください。
-
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
-
最初の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この公式を使えば、ループ処理を行わずに一発で答えを求めることが可能で