求最小公倍数(递归法)

偶遇一个简单的题但是其中的算法值得我借鉴 正是最大公约数和最小公倍数的求法 直接上代码简单易懂:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include<stdio.h> 
int gcd(int m,int n)//最大公约数
{
int t;
if(m<n)
t = n,n = m,m = t;
if(n == 0)
return m;
else
return gcd(n,m%n);
}
int lcm (int m,int n)//最小公倍数
{
return m*n/gcd(m,n);
}
int main()
{
int m,n,i=0;
int a[20];
while(scanf("%d %d",&m,&n) == 2&&n!=0)
printf("%dn",lcm(m,n));
}


1
2
3
return gcd(n,m%n);