티스토리 뷰
최대공약수와 최소공배수를 구하기 위해 유클리드 호제법을 사용하였다.
알고리즘
- 입력으로 두 수 m,n(m>n)이 들어온다.
- n이 0이라면, m을 출력하고 알고리즘을 종료한다.
- m이 n으로 나누어 떨어지면, n을 출력하고 알고리즘을 종료한다.
- 그렇지 않으면, 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))
출처
'문제 풀이 > Programmers' 카테고리의 다른 글
[python3][level 1] 핸드폰번호 가리기 (0) | 2018.04.11 |
---|---|
[python3][level 1] 문자열 내 마음대로 정렬하기 (0) | 2018.04.11 |
[python3][level 1] 같은 숫자는 싫어 (0) | 2018.04.10 |
[python3][level 1] 정수제곱근판별하기 (0) | 2018.04.10 |
[python3][level 1] 짝수와 홀수 (0) | 2018.04.10 |
댓글