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()