はじめに
このプロジェクトでは、1 から 1000 の範囲内のすべての完全数を見つける方法を学びます。完全数とは、その数自体を除いた真の約数の和に等しい正の整数です。
👀 プレビュー
## 範囲が 1~10 の場合、出力は以下のようになります。
完全数: 6 ## 6 = 1 + 2 + 3
🎯 タスク
このプロジェクトでは、以下のことを学びます。
- 与えられた範囲内のすべての完全数を見つけるための
perfect_number関数を実装する方法 perfect_number関数をテストし、結果の正確性を検証する方法- より良いパフォーマンスと読みやすさのために
perfect_number関数を最適化および改善する方法
🏆 成果
このプロジェクトを完了すると、以下のことができるようになります。
- 完全数の概念とその数学的性質を理解する
- 指定された範囲内のすべての完全数を見つける関数を書く
- コードをテストおよびデバッグして、正しく機能することを確認する
- より良い効率と読みやすさのためにコードを最適化する
- 問題解決能力を適用して、プログラミング能力を向上させる
問題を理解する
このステップでは、完全数の概念とプロジェクトの要件について学びます。
完全数とは、その数自体を除いた真の約数の和に等しい正の整数です。たとえば、6 の因数は 1、2、3 です。6 = 1 + 2 + 3 なので、6 は完全数です。
このプロジェクトの目標は以下の通りです。
perfect_number.pyのperfect_number関数を完成させて、1 から 1000 の範囲内のすべての完全数を見つける。- 見つけたすべての完全数を、スペース区切りで出力する。
perfect_number 関数を実装する
perfect_number.py ファイルを開き、perfect_number 関数を見つけます。この関数は、1 から 1000 の範囲内のすべての完全数を見つける役割を担っています。
以下は提供されている初期コードです。
def perfect_number():
"""
1 から 1000 の範囲内のすべての完全数を見つけます。
戻り値:
list: 1 から 1000 の範囲内で見つかった完全数のリスト。
"""
result = []
for num in range(1, 1001):
factors = []
for i in range(1, num):
if num % i == 0:
factors.append(i)
if sum(factors) == num:
result.append(num)
return result
コードを順を追って見ていきましょう。
perfect_number関数は、1 から 1000 の範囲内のすべての完全数を見つけるために定義されています。- 完全数を格納するための空のリスト
resultが初期化されます。 - 関数は 1 から 1000 までの数(1000 も含む)をループします。
- 各数に対して、その因数(数自体を除く)を見つけて
factorsリストに追加します。 - 因数の和が数に等しい場合、その数は完全数と見なされ、
resultリストに追加されます。 - 最後に、関数は見つかったすべての完全数を含む
resultリストを返します。
perfect_number 関数をテストする
perfect_number 関数をテストするには、perfect_number.py ファイルの末尾に以下のコードを追加します。
if __name__ == "__main__":
result = perfect_number()
print("Perfect numbers:", " ".join(map(str, result)))
このコードは perfect_number 関数を呼び出し、見つかったすべての完全数をスペース区切りで出力します。
perfect_number.py ファイルを保存して、次のコマンドでスクリプトを実行します。
python perfect_number.py
出力は以下のようになるはずです。
Perfect numbers: 6 28 496
これは、perfect_number 関数が正しく機能し、1 から 1000 の範囲内の完全数を見つけたことを意味します。
まとめ
おめでとうございます!このプロジェクトを完了しました。実験技術をさらに向上させるために、LabEx でさらに多くの実験を行ってみましょう。



