두 수의 최대공약수를 구하는 알고리즘입니다.
EX)
1. 일반적인 방법
1112 = 139 X 2 X 2 X 2
695 = 139 X 5
2. 유클리드 호제법
MOD연산 이용!
MOD연산 : 두 값을 나눈 나머지를 구하는 연산! (%)1112 % 695 = 417
695 % 417 = 278
417 % 278 = 139
278 % 139 = 0
나머지가 0이 됐을 때, 마지막 계산에서 나누는 수로 사용된 139가 1112와 695의 최대공약수가 된다!
int GCD(int a, int b){
int tmp;
while(b){ //b가 0이 될 때까지
tmp = a % b;
a = b;
b = tmp;
}
return a;
}
a%b
를 tmp
에 저장해줍니다.a
에 전에 나눈 수 b
를 저장합니다.b
에 전에 나눈 나머지 tmp
를 저장합니다int divide(int x, int y)
{
if (x % y == 0)
return y;
else
return divide(y, x % y);
}
y
리턴합니다.