Pythonで最初のn個の奇数の合計を求めるプログラム
数値 n が与えられたとき、最初の n 個の正の奇数の合計を求めることを考えます。
たとえば、入力が 7 の場合、出力は 49 になります。これは [1 + 3 + 5 + 7 + 9 + 11 + 13] = 49 となるためです。
解決の手順
この問題は、以下のステップに従って解くことができます。
- n が 0 と等しい場合は、0 を返します。
- 変数を初期化します。sum := 1、count := 0、temp := 1
- count < n - 1 の間、次の処理を繰り返します。
- temp := temp + 2(次の奇数を生成)
- sum := sum + temp(合計に加算)
- count := count + 1(カウントを進める)
- 最後に sum を返します。
それでは、実際の実装例を見て理解を深めましょう。
実装例
class Solution: def solve(self, n): if n == 0: return 0 sum = 1 count = 0 temp = 1 while(count<n-1): temp += 2 sum += temp count += 1 return sum ob = Solution() print(ob.solve(7))
入力
7
出力
49
補足:数学的な性質を利用した別解
実は、最初の n 個の奇数の合計には「必ず n の2乗になる」という美しい数学的性質があります。たとえば、最初の7個の奇数の合計は 7² = 49 です。
この性質を利用すると、ループ処理を使わずに次のように一行で解くこともできます。
class Solution: def solve(self, n): return n * n ob = Solution() print(ob.solve(7)) # 出力: 49
この方法なら時間計算量は O(1) となり、非常に効率的です。ただし、アルゴリズムの学習目的であれば、ループを使った実装もロジックの練習として役立ちます。
-
Pythonで配列(リスト)の合計を求める方法をわかりやすく解説
この記事では、配列(リスト)の合計値を求めるという問題に対して、Pythonでの解決策とアプローチをわかりやすく解説します。 問題の定義 配列が入力として与えられたとき、その配列に含まれるすべての要素の合計を計算することを目標とします。 例えば、[1, 2, 3, 4, 5] という配列が与えられた場合、出力は 15 になります。 アプローチ1:ループを使った素朴な方法(総当たり法) 最も基本的な方法は、リストを先頭から順に走査し、各要素を合計用の変数に加算していくやり方です。手順は以下の通りです。 合計を格納する変数を 0 で初期化します。 for ループでリストの各要素を取り出し、順番に
-
Pythonで数の奇数の約数(奇因子)の合計を求めるプログラム
この記事では、「整数 n が与えられたとき、その数の奇数の約数(奇因子)の合計を求める」という問題の解き方を解説します。 問題文 整数 n が入力として与えられます。求めるのは、n の奇数の約数をすべて足し合わせた値です。 例えば n = 27 の場合、約数は 1, 3, 9, 27 のすべてが奇数であるため、合計は 1 + 3 + 9 + 27 = 40 となります。 アプローチのポイント この問題で最初に行うべきは、偶数の約数をすべて除外することです。 偶数の約数を取り除くには、n が 2 で割り切れなくなるまで繰り返し 2 で割ります。この操作によって n から 2 の因数が完全に