【Python】最初のn個の自然数の立方和を求めるプログラム
本記事では、与えられた問題文を解決するための解法とアプローチについて詳しく解説します。
問題文 − 入力として n が与えられたとき、級数 1³ + 2³ + 3³ + 4³ + …… + n³ の第 n 項までの和を出力する必要があります。
ここでは、この問題を解決するための2つのアプローチを紹介します。
- ループを使用した総当たり(ブルートフォース)アプローチ
- n 個の数の和に関する数学的な公式を利用した解法
アプローチ1:数値を反復処理して各項の和を計算する
この方法では、1から n までの各数値を順番に取り出し、その立方値を累積していくことで合計を求めます。ロジックがシンプルで直感的に理解しやすいのが特徴ですが、n が大きくなるほど計算に時間がかかる点に注意が必要です。
例
def sumOfSeries(n):
sum = 0
for i in range(1, n+1):
sum += i*i*i
return sum
# ドライバー関数
n = 3
print(sumOfSeries(n))
出力
36
この例では、1³ + 2³ + 3³ = 1 + 8 + 27 = 36 となり、正しく計算できていることが確認できます。
アプローチ2:数学の公式を使った計算
次に、自然数の立方和についてすでに導出されている数学の公式を利用します。この方法ならループ処理が不要になり、一定の時間で結果を求められるため、大きな n に対しても効率的です。
Sum = ( n * (n + 1) / 2 ) ** 2
これは「最初の n 個の自然数の和(n(n+1)/2)を2乗すると、立方和に等しい」という有名な数学的性質に基づいた公式です。
例
def sumOfSeries(n):
x = (n * (n + 1) / 2)
return (int)(x * x)
# メイン処理
n = 3
print(sumOfSeries(n))
出力
36
まとめ
本記事では、最初の n 個の自然数の立方和を計算する2つのアプローチについて学びました。ループを使った方法は実装が簡単で理解しやすく、数学の公式を使った方法は計算量が少なく高速であるという利点があります。入力サイズや用途に応じて、適切な方法を選択して活用しましょう。
-
Pythonで2つの数の公約数を求めるプログラムの書き方
はじめに この記事では、以下の問題文に対する解決方法について学んでいきます。 問題文 2つの整数が与えられたとき、それらに共通する約数(公約数)の個数を表示する必要があります。 アプローチの考え方 まず、入力として受け取った2つの数のうち、小さい方の値(最小値)を計算します。続いて、1からその最小値までの各値で2つの数を順番に割っていき、両方の数を割り切ることができるかどうかをループ処理で確認します。 条件が真(True)と評価されるたびに、カウンターを1ずつ増加させます。最終的なカウンターの値が、2つの数の公約数の個数となります。 実装例 それでは、以下のコードで実際の実装を見てみましょう。
-
Pythonでフィボナッチ数を求める方法:再帰と動的計画法の2つのアプローチを徹底解説
本記事では、「n番目のフィボナッチ数を計算する」という問題に対する解決策と考え方を、2つの異なるアプローチ(再帰的手法と動的計画法)のコード例とともにわかりやすく解説します。 問題の概要 今回の課題は、n番目のフィボナッチ数を求めることです。 フィボナッチ数列 Fn は、次の漸化式によって定義されます。 Fn = Fn-1 + Fn-2 初期値(シード値)は以下の通りです。 F0 = 0、F1 = 1 この問題を解くには、主に次の2つの方法があります。 再帰的なアプローチ 動的計画法によるアプローチ アプローチ1:再帰的な手法 まずは、定義そのものをそのままコードに反映させた再帰的な実