두 개의 자연수를 입력받아 최대 공약수와 최소 공배수를 출력하는 프로그램을 작성하시오.
첫째 줄에는 두 개의 자연수가 주어진다. 이 둘은 10,000이하의 자연수이며 사이에 한 칸의 공백이 주어진다.
첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다.
세가지 방법이 있다
- (시간초과)
-2. math 라이브러리에서 gcm함수와 (최대공약수) & lcm함수 (최소공배수) 사용
- 유클리드 호재법
: 유클리드 호제법이란 x,y의 최대공약수는 y,r의 최대공약수와 같다는 원리를 이용한 것이다
(x%y = r)
x와 y의 최대 공약수 == y와 r 의 최대공약수
코드
import sys
sys.stdin = open("input.txt","rt")
import math
def input():
return sys.stdin.readline().rstrip()
a, b = map(int,input().split())
# 최대 공약수 구하기
print(math.gcd(a,b))
# 최소 공배수 구하기
print(math.lcm(a,b))
marh 라이브러리에 최대 공약수와 최고 공배수를 구하는 함수가 있구나