[Algorithm/문해기] 유클리드 호제법_최대공약수
2022. 9. 1. 08:44ㆍAlgorithm
최대 공약수 : Greatest Common Divisor, GCD
for 문을 이용해 min(m,n) 번의 if 문을 시행하려 든다면 두 변수의 크기가 커질수록 많은 시간 자원을 이용하게 된다. 따라서 유클리드 호제법을 이용한다.
유클리드 호제법 정리. 두 정수 m,n의 최대 공약수를 구하기 위해서는 이보다 크기가 작은 m(m<=n)과 r의 최대 공약수를 구하는 것이다.
여기서 r = n - mq 이다. (따라서 m>=r) 이때 두 수 중 하나가 0이 되는 순간, 나머지 하나가 최대 공약수가 된다.
gcd(m,n) = gcd(m,r)
<소스 코드>
#include <iostream>
using namespace std;
int n,m;
int gcd(int m, int n){
if(m==0) return n;
else return gcd(n%m,m);
}
int main()
{
cin>>n>>m;
cout<<gcd(n,m)<<"\n";
}
'Algorithm' 카테고리의 다른 글
[Algorithm/자료구조] 체계적인 탐색(systematic search) (0) | 2022.11.04 |
---|---|
[Algorithm/BOJ] KnapSack _ DP (1) | 2022.10.13 |
[Algorithm]Topology Sort(위상정렬) (0) | 2022.10.06 |
[Algorithm/문해기] 재귀(recursion)_거듭제곱 (0) | 2022.09.15 |
[Algorithm/BOJ] N과M(재귀함수 이용) (0) | 2022.09.04 |