My Notes

統計学とかR(R言語)とかPython3の覚え書きとか走り書きとか。 座右の銘にしたい: All work and no play makes Jack a dull boy.

Python3(リスト内包表記) 最大公約数(gcd)を求める。算数の奥深さ。

コードを書く際の縛り

可能な限りビルトイン関数は使用しない。

Sympy等の数学ライブラリは使用しない。

リスト内包表記を使用する。

可読性は気にしない。

汎用性は気にしない。

例外処理等はしない。

オレオレアルゴリズムで頑張る。

Python3コード

#!/usr/bin/env python3


"""(docstring)
"""


# コードを書く際の縛り
#
# 可能な限りビルトイン関数は使用しない。
# Sympy等の数学ライブラリは使用しない。
# リスト内包表記を使用する。
# 可読性は気にしない。
# 汎用性は気にしない。
# 例外処理等はしない。
# オレオレアルゴリズムで頑張る。


def calc_gcd(x, y):
    """(docstring)
    """

    res = max([i for i in range(1, y+1) if x%i == 0 and y%i == 0])
    print('{0}{1}{2}{3} {4}'.format(x, 'と', y, 'の最大公約数', res))

if __name__ == '__main__':
    calc_gcd(8, 12)
    calc_gcd(16, 24)
    calc_gcd(14, 28)
    calc_gcd(50, 125)

出力

8と12の最大公約数 4
16と24の最大公約数 8
14と28の最大公約数 14
50と125の最大公約数 25