알고리즘/python

[python/파이썬] 백준 2609 최대공약수와 최소공배수

ㅌㅇㄴ 2022. 2. 12. 01:46
반응형

문제

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

입력

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

출력

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

예제 입력 1 복사

24 18

예제 출력 1 복사

6
72

 

 

[소스 코드]

 gcd -> 최대공약수 구하는 함수

  : a와 b의 최대공약수는 a%b와 b의 공약수를 구하는 것과 같으므로 b>0인 동안 반복한다.

 lcm -> 최소공배수 구하는 함수

  : 최소공배수는 a와 b의 곱을 a와 b의 최대 공약수로 나누면 구할 수 있다.

a,b = map(int, input().split())

def gcd(a,b):
    while b>0:
        a,b = b, a%b
    return a
def lcm(a,b):
    return a * b // gcd(a,b)

print(gcd(a,b))
print(lcm(a,b))
반응형