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つであることがわかります。
なお、強い数は非常に稀な性質を持つ数であり、大きな範囲を調べても新たな強い数はほとんど見つかりません。
-
Bokehを使ってPythonでパッチ(Patch)プロットを生成する方法
BokehとはBokehは、Pythonでデータ可視化を行うためのオープンソースのパッケージです。BokehはHTMLとJavaScriptを使ってグラフを描画するため、Webベースのダッシュボードを作成する際に特に有用です。MatplotlibやSeabornが静的なグラフを生成するのに対し、Bokehはインタラクティブなグラフを生成できる点が大きな特徴です。ユーザーがグラフと操作(ズーム、パンなど)すると、それに応じて表示が変化します。また、Bokehで作成したグラフは、FlaskやDjangoで構築したWebアプリケーションの出力として埋め込むことも可能です。Jupyter Notebo
-
PythonのBokehで正弦波を生成・可視化する方法を解説
Bokehは、Pythonでデータ可視化を行うためのオープンソースライブラリです。HTMLとJavaScriptを使ってグラフを描画する仕組みを持っており、Webベースのダッシュボードを構築する際に特に力を発揮します。 データの可視化は分析において重要なステップです。数値を一つひとつ確認したり複雑な計算を実行したりしなくても、データ全体の傾向や特徴を直感的に把握できるようになるためです。 BokehはNumPyやPandasをはじめとする他のPythonパッケージとも容易に連携できます。インタラクティブなグラフやダッシュボードの作成に活用でき、定量的な洞察を読者や聴衆へ効果的に伝える助けとな