두 수의 gcd를 구하는 파이썬 스크립트
과제 때문에 작성한 스크립트인데 블로그 포스트로 괜찮을 것 같아서 올린다.
gcd.py
:
# -*- coding: utf-8 -*-
import argparse
def gcd(a, b):
mx = max(a, b)
mn = min(a, b)
d = mx // mn
rest = mx % mn
assert (d * mn + rest) == mx
if rest == 0:
return mn
return gcd(mn, rest)
def main():
parser = argparse.ArgumentParser()
parser.add_argument("a", type=int)
parser.add_argument("b", type=int)
args = parser.parse_args()
v = gcd(args.a, args.b)
print(v)
if __name__ == '__main__':
main()
사용법 (cli)
$ python gcd.py 6 81
3
$ python ./gcd.py 25 100
25
사용법 (module)
from gcd import gcd
print(gcd(6, 81)) // 3
print(gcd(100, 25)) // 25
구현
Euclidean algorithm을 이용했다.