python で最大公約数
組み込み関数に用意されているのですが、最初なので自分で作ってみました。なんとか、うまく動くようになった。
#最大公約数を計算するプログラム
from operator import mul
from functools import reduce
def gcf():
num1 = input('好きな数字を入力してください:')
num2 = input('もう一つ好きな数字を入力してください:')
x = int(num1)
y = int(num2)
gcf_factors = []
gcf_factor = 2
if x <= y:
while gcf_factor <= x :
if x % gcf_factor == 0 and y % gcf_factor == 0 :
gcf_factors.append(gcf_factor)
x = x / gcf_factor
y = y / gcf_factor
else:
gcf_factor += 1
if len(gcf_factors) == 0:
print('{0}と{1}の最大公約数は'.format(num1,num2))
print(1)
else:
print('{0}と{1}の最大公約数は'.format(num1,num2))
print(reduce(mul, gcf_factors))
print(gcf_factors)
else:
while gcf_factor <= y :
if x % gcf_factor == 0 and y % gcf_factor == 0 :
gcf_factors.append(gcf_factor)
x = x / gcf_factor
y = y / gcf_factor
else:
gcf_factor += 1
if len(gcf_factors) == 0:
print('{0}と{1}の最大公約数は'.format(num1,num2))
print(1)
else:
print('{0}と{1}の最大公約数は'.format(num1,num2))
print(reduce(mul, gcf_factors))
print(gcf_factors)
gcf()