[알고리즘] 유클리드 호제법 (GCD)
by mini_min유클리드 호제법 (GCD)
💡 유클리드 호제법은 2개의 자연수 또는 정식의 최대공약수를 구하는 알고리즘 중 하나이다.
- 호제법 = 두 수가 서로 상대방 수를 나누어 결국 원하는 수를 얻는 알고리즘을 말한다.
- 명시적으로 기술된 알고리즘 중 가장 오래되었다고 알려져 있다.
원리
1️⃣ 2개의 자연수 a,b 에 대하여 a를 b로 나눈 나머지가 r이면 (단, a>b) , a와 b의 최대공약수는 b와 r의 최대공약수와 같다.
2️⃣ 이 성질을 이용해 이번에는 b를 r로 나눈 나머지 r2 를 구하고, 다시 r을 r2 로 나눈 나머지를 구하는 과정을 반복해서 나머지가 0이 되었을 때 나누는 수가 a와 b의 최대공약수인 것이다.
접근방법
1️⃣ 반복문을 이용한 방법
2️⃣ 재귀를 이용한 방법
int GCD(int a, int b){
while(b!=0){
int r = a % b; //나머지
a = b; //b 대입.
b = r; //r 대입. //쭉 반복
}
return a;
}
int GCD(int a, int b) {
if(a%b==0){
return b;
}
return GCD(b, a%b);
}
'매일매일 알고리즘 공부 > 알고리즘 개념' 카테고리의 다른 글
[알고리즘] 좌표 압축 개념 (대소 관계로 정렬) (1) | 2023.10.16 |
---|---|
[알고리즘] 에라토스테네스의 체 란? (Prime 소수 구하기) (0) | 2023.09.22 |
[알고리즘] 상한가, 하한가 구하기 (이진 탐색 활용) (0) | 2023.08.21 |
[알고리즘] 계수 정렬 (Counting sort) 개념 + 백준 10989번 예제 (0) | 2023.08.17 |
[알고리즘] 이진 탐색 개념 + 예제 (0) | 2023.08.16 |
블로그의 정보
개발자 미니민의 개발로그
mini_min