C语言:用递归实现辗转相除法和辗转相减法求最大公约数和最小公倍数,下面2个程序错了,帮我改改,//辗转相减法int main(){int m,n;int gcd(int m,int n);int min(int m,int n);scanf("%d %d",&m,&n);printf("最大公约

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/28 01:31:20

C语言:用递归实现辗转相除法和辗转相减法求最大公约数和最小公倍数,下面2个程序错了,帮我改改,//辗转相减法int main(){int m,n;int gcd(int m,int n);int min(int m,int n);scanf("%d %d",&m,&n);printf("最大公约
C语言:用递归实现辗转相除法和辗转相减法求最大公约数和最小公倍数,下面2个程序错了,帮我改改,
//辗转相减法
int main()
{
int m,n;
int gcd(int m,int n);
int min(int m,int n);
scanf("%d %d",&m,&n);
printf("最大公约数:%d 最小公倍数:%d",gcd(m,n),min(m,n));
getch();
return 0;
}
int gcd(int m,int n)
{
int r,max,min;
if(m>n)
max=m;
else
min=n;
while((r=max-min)!=0)
gcd(min,r);
return n;
}
int min(int m,int n)
{
return ((m*n)/gcd(m,n)) ;
}
#include
int main()
{
int m,n;
int gcd(int m,int n);
int min(int m,int n);
scanf("%d %d",&m,&n);
printf("最大公约数:%d 最小公倍数:%d",gcd(m,n),min(m,n));
getch();
return 0;
}
//辗转相除法
int gcd(int m,int n)
{
int r;
while((r=m%n)!=0)
gcd(r,n);
printf("最大公约数:%d ",n);
return n;
}
int min(int m,int n)
{
return ((m*n)/gcd(m,n)) ;
}
我知道正确的程序,可是我这个错哪里了啊,还是根本连思路就错了,我递归学的很差,

C语言:用递归实现辗转相除法和辗转相减法求最大公约数和最小公倍数,下面2个程序错了,帮我改改,//辗转相减法int main(){int m,n;int gcd(int m,int n);int min(int m,int n);scanf("%d %d",&m,&n);printf("最大公约
这是两个算法的代码,主函数main()自己写,很简单 .
int gcd(int x,int y) //辗转相除法求最大公约数
{
int z;
do
{z=x%y;
x=y;
y=z;
}while(z!=0);
return x;
}
int gcd(int n,int m) { //这是递归
if (n%m==0)
return m;
else
return gcd(m,n%m);
}