关于C语言求两个数的最大公约数

一、求两个数的最大公约数有两种方法

1、求差法
对于传入的两个数,用较大的数减去较小的数,然后拿差与较小的数相比,若是相等,则这个数就是最大公约数。否则,对于差和较小的数再次重复上述的过程。
关于算法,则可利用while的循环来重复或者利用递归算法,这里采用递归来求解
 
 
 
 1 int division(int n,int m)
 2 {
 3     if(n<m)
 4         division(m,n); //交换n,m的值
 5     else if(n==m)
 6         return n;
 7     else
 8     {
 9         int temp=n;
10         n=m;
11         m=temp-n;
12         division(n,m); //重复上述过程
13     }
14 }    

 

2、求模法
求模法就是对于传入的两个数,用较大的数来对较小的数求模,要是模为零,则较大的数则为最大公约数。若是模不为零,则对于较小的数和模继续上述的过程。
此过程与上述的求差法几乎一模一样,仍利用递归法.
 
 1 int division(int n,int m)
 2 {
 3     if(n<m)
 4         division(m,n); //交换m与n
 5     else if(m==0)
 6         return n;
 7     else
 8     {
 9         int temp=n;
10         n=m;
11         m=temp%n;
12         division(n,m); //重复上述过程
13     }
14 }       
 
对于最小公倍数,则是两数相乘,然后除以最大公约数
 
 

 

posted @ 2016-04-13 15:54  Rmfone  阅读(16050)  评论(0)    收藏  举报