728x90
유클리드 호제법
2개의 자연수 a, b(a > b)에 대해서 a를 b로 나눈 나머지가 r일 때, a와 b의 최대공약수는 b와 r의 최대공약수와 같다.
시간복잡도: O(logN)
<< 최대공약수 구하는 코드 >>
int gcd(int num1, int num2) {
if (num2 == 0) return num1;
else return gcd(num2, num1 % num2);
}
def gcd(a, b):
while b > 0:
a, b = b, a % b
return a
<< 최소공배수 구하는 코드 >>
cout << num1 * num2 / gcd(num1, num2);
728x90
'알고리즘' 카테고리의 다른 글
재귀 방법으로 순열과 조합 구현하기 (0) | 2023.02.08 |
---|---|
★ 코딩 테스트에 나오는 알고리즘/문제 유형 총정리 (0) | 2023.02.01 |
6가지 대표적인 정렬 알고리즘(Sorting Algorithm) (1) | 2022.12.29 |
10진수를 2진수로 - 파이썬 (0) | 2022.12.22 |
약수 개수 구하기 / 소수 확인 알고리즘 (0) | 2022.11.20 |