int GCD(int m, int n) { int r1 = m, r2 = n, r3; for( ; ; ) { int q = r1 / r2; r3 = r1 - q * r2; if( r3 == 0) //根据算法r3必定越来越小,最后一定会等于0,所以不会死循环 break; r1 = r2; r2 = r3; } return r2; } 另一个实现: int gcd_1(int m, int n) { while(n!=0) { int rem = m % n; m = n; n = rem; } return m; } int gcd_1(int m, int n) { while(n!=0) { int rem = m % n; m = n; n = rem; } return m; }