首页 > 代码库 > 欧几里得算法(辗转相除法)计算最大公约数

欧几里得算法(辗转相除法)计算最大公约数

算法定义:

两个整数x和y且x>y的最大公因子等同于y与x mod y的最大公因子。

整数t整除x和y当且仅当t整除y和x mod y,因为x等同于x mod y 加上y的一个整数倍。

 

另:假设最后求解到的两个数的最大公约数是1,则认为两个数互素。

 

 1 /*递归算法*/ 2 int gcd_rec(int m, int n) 3 { 4     if (n == 0) 5         return m; 6     return gcd_rec(n, m % n); 7 } 8  9 10 /*迭代算法*/11 int gcd_iter(int m, int n)12 {13     while (m % n != 0)14     {15         int mod = m % n;16         m = n;17         n = mod;18     }19 20     return n;21 }

 

欧几里得算法(辗转相除法)计算最大公约数