유클리드 호제법이
a > b > 0 , 이고, gcd(a, b) 라는 함수가 있을때...
a mod b = r 이라면,
gcd(a, b) = gcd(b, r) 이 같다는 거잖냐..
이거를 가지고 알고리즘을 짠다고 할때, 어떻게 짜야 가장 효율적인거냐?
1.번
int gcd1(int x, int y) {
while( x != 0) {
if(x < y)
swap(x, y) ;
x %= y;
}
return y;
}
2.번
int gcd2(int x, int y) {
while(x != y) {
if(x > y)
x = x - y;
else
y = y - x;
}
return x;
}
3.번
int gcd3(int x, int y) {
int mod = x % y;
while(mod > 0) {
x = y;
y = mod;
mod = x % y;
}
return y;
}
댓글 0