武警部队与解放军打架:编写一个调用递归函数的程序,求出两个自然数m和n的最小公倍数。

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/06 02:28:20

#include<stdio.h>
int findx(int m,int n,int x)
{ if((x%m==0)&&(x%n==0)) return x;
return findx(m,n,x+m);/*递归调用*/

}
main()
{

int x,m,n;/*x最终是最小公倍数*/
printf("please input m\n");
scanf("%d",&m);
printf("please input n\n");
scanf("%d",&n);

if(m<n) {x=m;m=n;n=x;} /*确保m>n*/
x=m;
x=findx(m,n,x);
printf("the result is %d\n",x);

getch();
}

先用辗转相除求出最大公约数,再m*n/最大公约数。
关于辗转相除。
int a(int x,int y)
{
int temp;
temp=x%y;
if(temp==0)
{
return y;
}
else
{
return a(y,temp);
}
}

int min(int m,int n)
{
int i;
i=(m>n)?m:n;
for(;i<=m*n;i++)
if(i%m==0&&i%n==0)
break;
return i;
}

这个函数放到主函数中调用即可。