본문 바로가기

Python

백준 2609 - 최대공약수와 최소공배수 (파이썬)

문제

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

입력

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

출력

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

 

 

# 해결법

 

x, y에 값을 입력받고 x가 y보다 크다면 x와 y의 값을 서로 바꿔준다.

그리고 1에서 작은 값이된 x까지 반복문을 돌면서 공약수라면 gcd를 계속해서 갱신해준다.

cnt에 1씩 더하면서 큰 수를 곱하고, 곱한 값 % 작은수 가 0이라면 lcm을 갱신하고 break한다.

 

 

# 나의 코드

x, y = map(int, input().split())
gcd = lcm = cnt = 0
if x > y:
    x, y = y, x
for i in range(1,x+1):
    if x % i == 0 and y % i == 0:
        gcd = i
while True:
    cnt += 1
    if ((cnt * y) % x) == 0:
        lcm = cnt * y
        break
print(gcd)
print(lcm)