1/1! + 2/2! + 3/3! + … + n/n! の級数の合計を求めるC++プログラム
このチュートリアルでは、級数「1/1! + 2/2! + 3/3! + 4/4! + … + n/n!」の合計を求めるC++プログラムについて解説します。
nの値が与えられ、最初の項から順番にすべての項を足し合わせて、級数全体の合計を求めることが目標です。
考え方
各項は「i / i!」という形をしています。そこで、階乗の値を保持する変数を用意し、ループのたびに新しい値を掛けて更新しながら、その項を合計に加算していきます。階乗を毎回ゼロから計算し直す必要がないため、時間計算量はO(n)と非常に効率的です。
例
#include <iostream>
using namespace std;
// 級数の合計を計算する関数
double calc_sum(int n) {
double sum = 0, fact = 1;
for (int i = 1; i <= n; i++) {
fact = fact * i; // iの階乗を求める
sum += i / fact; // 項 i/i! を合計に加算
}
return sum;
}
int main() {
int n = 6;
double res = calc_sum(n);
cout << res << endl;
return 0;
}出力
2.71667
コードの解説
変数factは現在の階乗の値を保持します。ループの各反復では、まずfactにiを掛けて「i!」を求め、続いて「i / i!」をsumに加算します。
n = 6の場合、各項の値は以下の通りです。
- 1/1! = 1
- 2/2! = 1
- 3/3! = 0.5
- 4/4! ≈ 0.16667
- 5/5! ≈ 0.04167
- 6/6! ≈ 0.00833
これらをすべて足し合わせると、合計は約2.71667になります。
ちなみに、この級数はnを大きくしていくと自然対数の底e(約2.71828)に収束することでも知られています。
-
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 に