[백준, BOJ 2609] 최대공약수와 최소공배수 (python)
Problem Solving/BOJ

[백준, BOJ 2609] 최대공약수와 최소공배수 (python)

728x90

https://www.acmicpc.net/problem/2609

 

2609번: 최대공약수와 최소공배수

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

www.acmicpc.net


문제

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

입력

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

출력

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

728x90

예제 입력 1

24 18

예제 출력 1

6
72

유클리드 호제법 통해 구현

# 최대공약수 구하는 함수
def gcd(x, y):
    while(True):
        if x % y == 0:
            return y
        else:
            t = x % y
            x = y
            y = t
            
# 최소공배수 구하는 함수
def lcm(x, y):
    return x * y // gcd(x, y)

n, m = map(int, input().split())

if n > m:
    print(gcd(n, m))
    print(lcm(n, m))
else:
    print(gcd(m, n))
    print(lcm(m, n))

 

math gcd, lcm 함수 사용

import math

n, m = map(int, input().split())

print(math.gcd(n, m))
# Python 3.9 부터 사용 가능
print(math.lcm(n, m))

 

math gcd 함수만 사용

import math

n, m = map(int, input().split())

print(math.gcd(n, m))
print(n * m // math.gcd(n, m))
728x90