Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで強い数(ストロングナンバー)を生成・出力する方法

強い数(Strong Number)とは?

強い数(ストロングナンバー)とは、その数を構成する各桁の数字の階乗の合計が、元の数自身と等しくなる数のことです。

例えば、145は次のように計算できるため、強い数です。

1! + 4! + 5! = 1 + 24 + 120 = 145

ステップ1:階乗を計算する関数を作成する

まず、任意の整数の階乗を求める関数を定義します。whileループを使って、1からnまでの積を順番に計算するシンプルな実装です。

def factorial(n):
    num = 1
    while n >= 1:
        num = num * n
        n = n - 1
    return num

ステップ2:強い数を出力するコードを書く

次に、指定した範囲内のすべての数について、各桁の階乗の合計が元の数と一致するかどうかを判定し、一致したものだけを出力する関数を作成します。

def print_strong_nums(start, end):
    for i in range(start, end + 1):
        # 数値の各桁をリストとして取得
        digits = list(map(int, str(i)))
        total = 0
        for d in digits:
            total += factorial(d)
        if total == i:
            print(i)

print_strong_nums(1, 380)

このコードのポイントは、str(i)で数値を文字列に変換し、map(int, ...)で各桁を整数のリストに変換している点です。これにより、桁ごとの処理が簡単に行えます。

実行結果

上記のコードを実行すると、以下の出力が得られます。

1
2
145

この結果から、1〜380の範囲内に存在する強い数は「1」「2」「145」の3つであることがわかります。
なお、強い数は非常に稀な性質を持つ数であり、大きな範囲を調べても新たな強い数はほとんど見つかりません。

  1. Bokehを使ってPythonでパッチ(Patch)プロットを生成する方法

    BokehとはBokehは、Pythonでデータ可視化を行うためのオープンソースのパッケージです。BokehはHTMLとJavaScriptを使ってグラフを描画するため、Webベースのダッシュボードを作成する際に特に有用です。MatplotlibやSeabornが静的なグラフを生成するのに対し、Bokehはインタラクティブなグラフを生成できる点が大きな特徴です。ユーザーがグラフと操作(ズーム、パンなど)すると、それに応じて表示が変化します。また、Bokehで作成したグラフは、FlaskやDjangoで構築したWebアプリケーションの出力として埋め込むことも可能です。Jupyter Notebo

  2. PythonのBokehで正弦波を生成・可視化する方法を解説

    Bokehは、Pythonでデータ可視化を行うためのオープンソースライブラリです。HTMLとJavaScriptを使ってグラフを描画する仕組みを持っており、Webベースのダッシュボードを構築する際に特に力を発揮します。 データの可視化は分析において重要なステップです。数値を一つひとつ確認したり複雑な計算を実行したりしなくても、データ全体の傾向や特徴を直感的に把握できるようになるためです。 BokehはNumPyやPandasをはじめとする他のPythonパッケージとも容易に連携できます。インタラクティブなグラフやダッシュボードの作成に活用でき、定量的な洞察を読者や聴衆へ効果的に伝える助けとな