티스토리 뷰


최대공약수와 최소공배수를 구하기 위해 유클리드 호제법을 사용하였다.

알고리즘

  1. 입력으로 두 수 m,n(m>n)이 들어온다.
  2. n이 0이라면, m을 출력하고 알고리즘을 종료한다.
  3. m이 n으로 나누어 떨어지면, n을 출력하고 알고리즘을 종료한다.
  4. 그렇지 않으면, m을 n으로 나눈 나머지를 새롭게 m에 대입하고, m과 n을 바꾸고 3번으로 돌아온다.

문제풀이

def gcdlcm(a, b):
    lst = []
    max1,max2 = a, b
    min1,min2 = a, b
    
    while max2 != 0:
       t = max1%max2
       (max1,max2) = (max2,t)
    lst.append(abs(max1))
    
    big = max(min1,min2)
    while True:
        if big % min1 == 0 and big % min2 == 0:
            lst.append(big)
            break
        big += 1
    return lst

# 아래는 테스트로 출력해 보기 위한 코드입니다.
print(gcdlcm(3,12))

출처

https://ko.wikipedia.org/wiki/유클리드_호제법

댓글
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Total
Today
Yesterday