유클리드의 알고리즘은 양의 정수 목록의 GCD (큰 공통 제수)를 얻는 데 가장 적합한 알고리즘이라는 것을 알고 있습니다. 그러나 실제로이 알고리즘을 다양한 방법으로 코딩 할 수 있습니다. (제 경우에는 Java를 사용하기로 결정했지만 C / C ++가 다른 옵션 일 수 있습니다).
내 프로그램에서 가능한 가장 효율적인 코드를 사용해야합니다.
재귀 모드에서는 다음과 같이 쓸 수 있습니다.
static long gcd (long a, long b){
a = Math.abs(a); b = Math.abs(b);
return (b==0) ? a : gcd(b, a%b);
}
반복 모드에서는 다음과 같습니다.
static long gcd (long a, long b) {
long r, i;
while(b!=0){
r = a % b;
a = b;
b = r;
}
return a;
}
GCD에 대한 이진 알고리즘도 있으며 다음과 같이 간단하게 코딩 할 수 있습니다.
int gcd (int a, int b)
{
while(b) b ^= a ^= b ^= a %= b;
return a;
}