級数 1 + 1/2² + 1/3³ + … + 1/nⁿ の合計を求めるC++プログラム
このチュートリアルでは、級数「1 + 1/22 + 1/33 + … + 1/nn」の合計を求めるC++プログラムについて解説します。
具体的には、値 n が与えられたときに、第1項から第n項までの各項を順番に足し合わせ、級数全体の合計を計算するのが目的です。
アルゴリズムの考え方
アプローチはシンプルです。1からnまでの各整数 i に対して「1 / ii」を計算し、その結果を合計用の変数に加算していきます。べき乗の計算には、math.h(C++では cmath)ヘッダーに含まれる pow() 関数を利用します。
サンプルコード
#include <iostream>
#include <math.h>
using namespace std;
// 級数の合計を計算する関数
double calc_sum(int n) {
int i;
double sum = 0.0, ser;
for (i = 1; i <= n; i++) {
ser = 1.0 / pow(i, i);
sum += ser;
}
return sum;
}
int main() {
int n = 5;
double res = calc_sum(n);
cout << res << endl;
return 0;
}
出力結果
1.29126
コードの解説
calc_sum() 関数では、forループを使ってカウンタ変数 i を1から n まで順に処理します。各反復の中で pow(i, i) により「i の i 乗」を求め、その逆数を sum に加算していきます。
n = 5 の場合、実際の計算は次のようになります。
1 + 1/4 + 1/27 + 1/256 + 1/3125 ≒ 1.29126
実装時の注意点
ループ内で複数の文(項の計算と加算)を実行する場合は、必ず波括弧 { } で処理を囲んでください。囲み忘れると、ループの本体は最初の1文だけとみなされ、最終項のみが加算されてしまい、正しい合計が得られません。
また、除算を行う際は 1.0 のように浮動小数点リテラルを使うことで、意図しない整数演算による誤差を防げます。
-
Pythonでオイラー数eを計算する方法|e = 1 + 1/1! + 1/2! + … + 1/n! を使った実装
オイラー数(ネイピア数)eは、数学において最も重要な定数の一つです。本記事では、次の級数の式を用いてオイラー数の値を計算するPythonプログラムの実装方法を解説します。 e = 1 + 1/1! + 1/2! + 1/3! + …… + 1/n! この計算を実現するためには、まず与えられた数の階乗を求める関数を定義し、続いてそれらの階乗の逆数の総和を計算する関数を定義します。以下に具体的な実装例を示します。 サンプルコード def factorial_result(n): result = 1 for i in range(2, n + 1): result
-
1/1! + 2/2! + 3/3! + …… + n/n! の級数の合計を求めるPythonプログラム
この記事では、与えられた問題を解くための解法とアプローチについて詳しく解説します。 問題文 整数 n が入力として与えられたとき、次の級数の合計を求めます。 1/1! + 2/2! + 3/3! + 4/4! + …… + n/n! ここでは for ループを使用して実装するため、時間計算量は O(n) となります。また、処理効率を高めるポイントとして、階乗の計算を同じループ内で同時に行っている点が挙げられます。 アルゴリズム 以下の手順で級数の合計を求めます。 合計値 res を 0、階乗値 fact を 1 で初期化します。 i を 1 から n まで順に処理し、fact *= i に