题目描述:在一个程序里用C语言求出用户输入来两个数的最大公约数和最小公倍数。
例如用户输入为
7 9
则输出应为
1 63
代码如下
#include<stdio.h>
void maxdivisor(int m,int n);//求最大公约数
void lowstmultiple(int m,int n);//求最小公倍数
int main()
{
int a,b;
scanf("%d %d",&a,&b);
maxdivisor(a,b);
lowstmultiple(a,b);
return 0;
}
void maxdivisor(int m,int n)//利用辗转相除法求最大公约数
{
int a;
if(m>n)
{
if((m%n)==0)
{
printf("%d ",n);
}
else
{
a=m%n;
m=n;
n=a;
maxdivisor(m,n);//使用了递归调用
}
}
else
{
maxdivisor(n,m);
}
}
void lowstmultiple(int m,int n)
{
int i,a;
if(m<n)
{
a=m;
m=n;
n=a;
}
for(i=m;i<=m*n;i++)//从最大数开始到它们的乘积为止
{
if((i%m==0)&&(i%n==0))
{
printf("%d",i);
break;//直接条出循环
}
}
}
笔记:
2、多利用调用可以减少代码量