https://www.acmicpc.net/problem/2609
문제
두 개의 자연수를 입력받아 최대 공약수와 최소 공배수를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에는 두 개의 자연수가 주어진다. 이 둘은 10,000이하의 자연수이며 사이에 한 칸의 공백이 주어진다.
출력
첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다.
기본 \(\rightarrow\) 시간 : 3976ms
def gcd(a, b):
a, b = min(a, b), max(a, b)
for i in range(a, 0, -1):
if a % i == 0 and b % i == 0:
return i
def lcm(a, b):
a, b = min(a, b), max(a, b)
for i in range(b, (a*b)+1):
if i % a == 0 and i % b == 0:
return i
a, b = map(int, input().split())
print(gcd(a, b))
print(lcm(a, b))
유클리드 호제법 \(\rightarrow\) 시간 : 72ms
def gcd(a, b):
a, b = min(a, b), max(a, b)
while b:
a, b = b, a % b
return a
def lcm(a, b):
a, b = min(a, b), max(a, b)
return (a * b) // gcd(a, b)
a, b = map(int, input().split())
print(gcd(a, b))
print(lcm(a, b))
라이브러리 \(\rightarrow\) 시간 : 76ms
import math
a, b = map(int, input().split())
print(math.gcd(a, b))
print(math.lcm(a, b))
'Coding Test > 백준' 카테고리의 다른 글
[백준] / [Python] / [3036] 링 (0) | 2022.11.16 |
---|---|
[백준] / [Python] / [1934] 최소공배수 (0) | 2022.11.15 |
[백준] / [Python] / [1037] 약수 (0) | 2022.11.15 |
[백준] / [Python] / [5086] 배수와 약수 (0) | 2022.11.15 |
[백준] / [Python] / [1002] 터렛 (0) | 2022.11.15 |