# 최대공약수(유클리드 호제법 사용)
def ucle_max(a, b):
    if b>a:
        temp=a
        a = b
        b = temp
    while b> 0:
        c = b
        b = a % b
        a = c
    return a

# 최소공배수(두 수를 곱한 후 최대공약수를 나눌 경우 최소공배수가 됨)
def ucle_min(a, b):
    return a * b // ucle_max(a, b)

n1 = int(input('첫번째 수 입력 : '))
n2 = int(input('두번째 수 입력 : '))

print('최대공약수 : {0}'.format(ucle_max(n1, n2)))
print('최소공배수 : {0}'.format(ucle_min(n1, n2)))

 

유클리드 호제법

큰수에서 작은수의 나머지를 구함

(큰수 / 작은수)의 나머지

두 수의 작은수와 구해진 나머지를 나누 나머지를 구함

(작은수 / 구해진 나머지)의 나머지를 구함

반복하다가 나머지가 0일 경우 그 수가 최대공약수

 

최소공배수는 두 수를 곱한 후 구해진 최대공약수를 나눈다.

'알고리즘 > Python' 카테고리의 다른 글

[Python] 애너그램(Anagram)  (0) 2020.12.17
(CodeUp/Python) 3321 : 최고의 피자  (0) 2019.07.26
(CodeUp/Python) 3301 : 거스름돈  (0) 2019.07.26
(CodeUp/Python) 3120 : 리모컨  (0) 2019.07.26
(CodeUp/Python) 2001 : 최소 대금  (0) 2019.07.26

+ Recent posts