[백준 2609] 최대공약수와 최소공배수 Python

안재영·2022년 3월 5일
post-thumbnail

최대공약수와 최소공배수

  • 티어 : Silver 5
  • 시간 제한 : 1 초
  • 메모리 제한 : 128 MB
  • 알고리즘 분류 : 수학, 정수론, 유클리드 호제법

문제

두 개의 자연수를 입력받아 최대 공약수와 최소 공배수를 출력하는 프로그램을 작성하시오.

입력

첫째 줄에는 두 개의 자연수가 주어진다. 이 둘은 10,000이하의 자연수이며 사이에 한 칸의 공백이 주어진다.

출력

첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다.

예제 입출력


Algorithm

1. 유클리드 호제법 이용
	1.1. 유클리드 호제법 함수 생성 - 재귀
	1.2. A와 B의 최대 공약수는 B와 A%B의 최대공약수와 같다.
2. 최소공배수 = A*B%최대공약수

Code

import sys
input = sys.stdin.readline

def euclid(A, B):
    R = A % B
    # A가 B의 배수이면 Return
    if R == 0:
        return B
    return euclid(B, R)

A, B = map(int, input().split())
answer = euclid(max(A, B), min(A, B))
print(answer)
print(A * B // answer)

메모리: 30864 KB
시간: 72 ms

profile
안녕하세요 : )

0개의 댓글