728x90
https://www.acmicpc.net/problem/2609
문제
두 개의 자연수를 입력받아 최대 공약수와 최소 공배수를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에는 두 개의 자연수가 주어진다. 이 둘은 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
'Problem Solving > BOJ' 카테고리의 다른 글
[백준, BOJ 2805] 나무 자르기 (python -> pypy) (0) | 2021.12.04 |
---|---|
[백준, BOJ 2751] 수 정렬하기 2 (python) (0) | 2021.12.03 |
[백준, BOJ 23234] The World Responds (python) (0) | 2021.12.01 |
[백준, BOJ 2164] 카드2 (python) (0) | 2021.12.01 |
[백준, BOJ 2108] 통계학 (python) (0) | 2021.11.29 |