ChatGPTに最大公約数と最小公倍数を求めるPythonコードを書いてもらいました。
世界最古のアルゴリズムとして知られている「ユークリッドの互除法」を使う有名な問題です。
指示文(プロンプト):
任意の2つの自然数の最大公約数と最小公倍数を求めるpythonコードを示してください。2つの自然数は変数として定義できるようにしてください。計算結果をprintするようにしてください。
回答:
以下は、ユークリッドの互除法を使った2つの自然数の最大公約数と最小公倍数を求めるPythonコードです。変数として定義された2つの自然数は、それぞれ「a」と「b」として扱われます。
def gcd(a, b):
"""
2つの自然数aとbの最大公約数を返す。
"""
while b != 0:
a, b = b, a % b
return a
def lcm(a, b):
"""
2つの自然数aとbの最小公倍数を返す。
"""
return a * b // gcd(a, b)
# 2つの自然数を変数として定義する
num1 = 36
num2 = 48
# 最大公約数を求め、結果を出力する
result_gcd = gcd(num1, num2)
print(f"{num1}と{num2}の最大公約数は{result_gcd}です。")
# 最小公倍数を求め、結果を出力する
result_lcm = lcm(num1, num2)
print(f"{num1}と{num2}の最小公倍数は{result_lcm}です。")
このコードでは、2つの自然数「num1」と「num2」を変数として定義し、それぞれ36と48に設定されています。最大公約数を計算するために、関数gcdを呼び出し、num1とnum2を引数として渡します。同様に、最小公倍数を計算するために、関数lcmを呼び出し、num1とnum2を引数として渡します。計算結果は、print文を使って出力されます。
結果:
自然数は 2832 と 3776 としました。最大公約数は944、最小公倍数は11328が正解です。以下のように成功しました。