【Python】ユーザーが指定した行数のパスカルの三角形を出力するプログラム
はじめに
パスカルの三角形とは、二項係数をピラミッド状に並べた数の配列です。各行の両端は必ず1になり、内側の数はすぐ上の段にある左右の数を足した値になります。本記事では、ユーザーが入力した行数に応じてパスカルの三角形をコンソールに出力するPythonプログラムを紹介します。実装には、シンプルな「for」ループと、mathモジュールのfactorial(階乗)関数を使用します。
サンプルコード
以下にプログラムの実装例を示します。
from math import factorial
input = int(input("Enter the number of rows..."))
for i in range(input):
for j in range(input-i+1):
print(end=" ")
for j in range(i+1):
print(factorial(i)//(factorial(j)*factorial(i-j)), end=" ")
print()実行結果
Enter the number of rows...6
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1コードの解説
まず、階乗を計算するためにmathモジュールからfactorial関数をインポートします。
int(input())によって、出力したい行数をユーザーから入力として受け取ります。
外側のforループで行を管理し、最初の内側のループで左側の空白を出力して三角形の形を整えます。
次の内側のループでは、二項係数の公式「nCk = n! ÷ (k! × (n−k)!)」をfactorial関数と整数除算演算子「//」で計算し、各行の数値を出力します。
最後にprint()で改行することで、行ごとにきれいに表示されます。
まとめ
このように、階乗を使った二項係数の計算とネストされたforループを組み合わせることで、ユーザーが指定した任意の行数のパスカルの三角形を簡単に出力できます。行数を変更すれば、より大きな三角形も同様に生成可能です。
-
Pythonで与えられた数の素因数をすべて効率的に出力するプログラムの作成方法
本記事では、与えられた整数の素因数(そいんすう)をすべて効率的に求めて出力するPythonプログラムについて詳しく解説します。 問題文 ある整数 n が与えられたとき、その数を構成するすべての素因数を見つけて出力することです。 例えば 200 の場合、200 = 2 × 2 × 2 × 5 × 5 と分解できるため、出力は「2, 2, 2, 5, 5」となります。 効率的なアプローチとは 2からnまですべての数で割り切れるかを順番に確認する素朴な方法では、計算量が O(n) かかり非効率です。そこで、次の3つの性質を利用することで、計算量を O(√n) まで削減できます。 まず2で割れるだけ
-
【Python】与えられた数がフィボナッチ数かどうかを判定する方法を解説
本記事では、以下の問題文に対する解決策について詳しく学んでいきます。 問題の定義 数値 n が与えられたとき、その数がフィボナッチ数であるかどうかを判定します。 ご存知のとおり、n番目のフィボナッチ数は「直前の2つのフィボナッチ数の和」として定義されます。しかし、この漸化式以外にも、フィボナッチ数には興味深い数学的な性質が存在します。 フィボナッチ数の判定に使える重要な性質 ある数 n がフィボナッチ数であるのは、次の条件が成り立つ場合、かつその場合に限られます。 5×n² + 4 が完全平方数である または 5×n² − 4 が完全平方数である つまり、上記のどちらか一方(または両方)が