/* * Author: Leng_que * Date: 2009年7月5日 * E-mail: leng_que@yahoo.com.cn * Description: 欧几里德(Euclid)算法又称辗转相除法,用于计算两个整数的最大公约数。 */ #include <iostream> using namespace std; //欧几里得求最大公约数算法 —— 递归版 int gcd_recursive(int a,int b) { if ( a%b == 0 ) { return b; } else { return gcd_recursive( b, a%b ); } } //欧几里得求最大公约数算法 —— 非递归版 int gcd(int a,int b) { int temp=0; for(;;) { if ( a%b == 0 ) { return b; } else { temp = a%b; a = b; b = temp; } } } int main(void) { int r=0; int a,b; a = 12; b = 20; cout<<a<<"和"<<b<<"的最大公约数为:"<<endl; r = gcd_recursive(a,b); cout<<r<<endl; r = gcd(a,b); cout<<r<<endl; return 0; }