完全数探索プロジェクト

PythonBeginner
オンラインで実践に進む

はじめに

このプロジェクトでは、1 から 1000 の範囲内のすべての完全数を見つける方法を学びます。完全数とは、その数自体を除いた真の約数の和に等しい正の整数です。

👀 プレビュー

## 範囲が 1~10 の場合、出力は以下のようになります。
完全数: 6  ## 6 = 1 + 2 + 3

🎯 タスク

このプロジェクトでは、以下のことを学びます。

  • 与えられた範囲内のすべての完全数を見つけるための perfect_number 関数を実装する方法
  • perfect_number 関数をテストし、結果の正確性を検証する方法
  • より良いパフォーマンスと読みやすさのために perfect_number 関数を最適化および改善する方法

🏆 成果

このプロジェクトを完了すると、以下のことができるようになります。

  • 完全数の概念とその数学的性質を理解する
  • 指定された範囲内のすべての完全数を見つける関数を書く
  • コードをテストおよびデバッグして、正しく機能することを確認する
  • より良い効率と読みやすさのためにコードを最適化する
  • 問題解決能力を適用して、プログラミング能力を向上させる

問題を理解する

このステップでは、完全数の概念とプロジェクトの要件について学びます。

完全数とは、その数自体を除いた真の約数の和に等しい正の整数です。たとえば、6 の因数は 1、2、3 です。6 = 1 + 2 + 3 なので、6 は完全数です。

このプロジェクトの目標は以下の通りです。

  1. perfect_number.pyperfect_number 関数を完成させて、1 から 1000 の範囲内のすべての完全数を見つける。
  2. 見つけたすべての完全数を、スペース区切りで出力する。

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

コードを順を追って見ていきましょう。

  1. perfect_number 関数は、1 から 1000 の範囲内のすべての完全数を見つけるために定義されています。
  2. 完全数を格納するための空のリスト result が初期化されます。
  3. 関数は 1 から 1000 までの数(1000 も含む)をループします。
  4. 各数に対して、その因数(数自体を除く)を見つけて factors リストに追加します。
  5. 因数の和が数に等しい場合、その数は完全数と見なされ、result リストに追加されます。
  6. 最後に、関数は見つかったすべての完全数を含む 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 でさらに多くの実験を行ってみましょう。

✨ 解答を確認して練習✨ 解答を確認して練習✨ 解答を確認して練習