求最大公约数与最小公倍数

 求两正整数的最大公约数,用辗转相除法。

 1 #include<assert.h> 
 2 
 3 #define swap(a,b,type)  do{ type t; t=a; a=b; b=t; }while(0)
 4 
 5  int gcd(int a,int b)
 6 {
 7     int t;
 8     assert(a>0&&b>0);
 9     
10     if(a<b)
11         swap(a,b,int);
12     while(b)
13     {
14         t=a%b;
15      a=b;
16      b=t;
17    }
18     return a;
19 }

 求两正整数的最小公倍数,方法是a*b/gdc(a,b)

1 #include<assert.h>
2 int lcm(int a,int b)
3 {
4     assert(a>0&&b>0);
5     return a*b/gcd(a,b);
6 }

 

posted @ 2015-11-19 17:12  _Bin  阅读(154)  评论(0编辑  收藏  举报