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/07/02 03:40:58
![C语言:用递归实现辗转相除法和辗转相减法求最大公约数和最小公倍数,下面2个程序错了,帮我改改,//辗转相减法int main(){int m,n;int gcd(int m,int n);int min(int m,int n);scanf(](/uploads/image/z/7804882-10-2.jpg?t=C%E8%AF%AD%E8%A8%80%EF%BC%9A%E7%94%A8%E9%80%92%E5%BD%92%E5%AE%9E%E7%8E%B0%E8%BE%97%E8%BD%AC%E7%9B%B8%E9%99%A4%E6%B3%95%E5%92%8C%E8%BE%97%E8%BD%AC%E7%9B%B8%E5%87%8F%E6%B3%95%E6%B1%82%E6%9C%80%E5%A4%A7%E5%85%AC%E7%BA%A6%E6%95%B0%E5%92%8C%E6%9C%80%E5%B0%8F%E5%85%AC%E5%80%8D%E6%95%B0%2C%E4%B8%8B%E9%9D%A22%E4%B8%AA%E7%A8%8B%E5%BA%8F%E9%94%99%E4%BA%86%2C%E5%B8%AE%E6%88%91%E6%94%B9%E6%94%B9%2C%2F%2F%E8%BE%97%E8%BD%AC%E7%9B%B8%E5%87%8F%E6%B3%95int+main%28%29%7Bint+m%2Cn%3Bint+gcd%28int+m%2Cint+n%29%3Bint+min%28int+m%2Cint+n%29%3Bscanf%28%22%25d+%25d%22%2C%26m%2C%26n%29%3Bprintf%28%22%E6%9C%80%E5%A4%A7%E5%85%AC%E7%BA%A6)
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);
}