码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2016-11-13 02:17:05      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:ret   code   算法   除法   nbsp   递归   辗转相除法   blog   个数   

算法定义:

两个整数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 }

 

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

标签:ret   code   算法   除法   nbsp   递归   辗转相除法   blog   个数   

原文地址:http://www.cnblogs.com/wanpengcoder/p/6057988.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!