반응형
[Bronze I] 최대공약수와 최소공배수 - 2609
성능 요약
메모리: 108384 KB, 시간: 96 ms
분류
유클리드 호제법, 수학, 정수론
제출 일자
2025년 1월 16일 15:42:00
문제 설명
두 개의 자연수를 입력받아 최대 공약수와 최소 공배수를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에는 두 개의 자연수가 주어진다. 이 둘은 10,000이하의 자연수이며 사이에 한 칸의 공백이 주어진다.
출력
첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다.
결과 코드
시간 복잡도는 둘 다 O(log n)
두 가지 코드
1. 라이브러리 사용
import math
A, B = map(int, input().split())
print(math.gcd(A, B))
print(math.lcm(A, B))
2. 직접 유클리드 호제법 구현
def gcd(A, B):
while (B != 0): A, B = B, A % B
return A
A, B = map(int, input().split())
print(gcd(A, B))
print((A * B) // gcd(A, B))
728x90
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[Silver III] 1로 만들기 - 1463 python (0) | 2025.01.20 |
---|---|
[Silver III] 피보나치 함수 - 1003 python (0) | 2025.01.16 |
[Silver IV] 듣보잡 - 1764 python (0) | 2025.01.15 |
[Bronze I] 팰린드롬수 - 1259 python (0) | 2025.01.15 |
[Silver V] 집합 - 11723 python (0) | 2025.01.14 |