코드
A,B = map(int, input().split())
# 최대 공약수는
# 둘중에 작은 수와 큰수%작은수와의 최대공약수와 같다
# 작은 수가 0이 될때까지 반복한다. 그럼 큰 수가 최대 공약수이다.
a,b = A,B
while b!=0:
a = a % b
a, b = b, a
gcd = a
print(gcd)
lcm = A * B//a
print(lcm)
풀이
최대 공약수를 구하는 공식
둘중에 작은 수와 큰수와 작은수를 나눈 나머지와의 최대공약수와 같다
24와 18의 최대 공약수 = 18(작은수)와 6(24%18)의 최대 공약수 = 6(작은수)와 0(18%6)의 최대공약수
작은수가 0이 되면 그때 큰 수가 최대 공약수가 된다
최소 공배수는 주어진 수 하나는 그대로 곱하고 하나는 최대공약수로 나눠서 곱해주면 된다
최대 공배수는 이렇게 구하기 때문임!
728x90
'알고리즘 > 백준 문제풀이' 카테고리의 다른 글
[백준] 1929 소수 구하기 파이썬 풀이 (기본수학2) (1) | 2021.06.20 |
---|---|
[백준] 10250 ACM호텔 파이썬 풀이 (기본 수학1) (0) | 2021.06.20 |
[백준] 1037 약수 파이썬 풀이 (정수론 및 조합론) (0) | 2021.06.20 |
[백준] 2869 달팽이는 올라가고 싶다 파이썬 풀이 (기본 수학 1) (0) | 2021.06.20 |
[백준] 1436 영화감독 숌 파이썬 풀이 (브루트포스) (0) | 2021.06.20 |