728x90
728x90
유클리드 호제법을 이용해 최소공약수와 최대공배수를 구하라는 문제.
두 수 중 큰 수를 작은 수로 나누고, 그 나머지로 원래 큰 수를 대신한다.
둘 중 한쪽이 0이 될 때까지 실행하며 다른 값이 최대공약수다.
원래 두 수를 곱한 값에서 최대공약수를 나누면 최소공배수가 된다.
원리는 알지만 늘 신기하다!ㅋㅋㅋ
그리고 그 원리를 늘 다시 까먹는다.
다시 공부하고 신기해하고 반복..
최소공배수 구하는 건 새로워서 이 방법으로 해봤다.
참신하고 신기하다..
A, B = map(int, input().split())
copyA, copyB = A, B
while not (A==0 or B==0):
if max(A, B) == A:
A = A % B
else:
B = B % A
result = max(A, B)
print(result)
print(copyA * copyB // result)
728x90
728x90
'[Python]BaekJoon.AC' 카테고리의 다른 글
[Python]백준 BaekJoon.AC 10989 : 수 정렬하기3(sys, list) (0) | 2022.01.14 |
---|---|
[Python]백준 BaekJoon.AC 10814 : 나이순 정렬(list, sort()) (0) | 2022.01.13 |
[Python]백준 BaekJoon.AC 7568 : 덩치(list, for문) (0) | 2022.01.13 |
[Python]백준 BaekJoon.AC 2751 : 수 정렬하기2(sys, sort()) (0) | 2022.01.13 |
[Python]백준 BaekJoon.AC 1436 : 영화감독 숌(브루트포스, find()) (0) | 2022.01.11 |
[Python]백준 BaekJoon.AC 1181 : 단어 정렬(sort()) (0) | 2022.01.11 |
[Python]백준 BaekJoon.AC 1018 : 체스판 다시 칠하기(list, for문) (0) | 2022.01.10 |
[Python]백준 BaekJoon.AC 11050 : 이항 계수1(for문) (0) | 2022.01.09 |