永发信息网

编一个程序,用递归函数 gcd(a,b)实现求两个整数 a,b 最大公因子的欧几里德算法。输入任意整数a,b,调用递

答案:5  悬赏:30  手机版
解决时间 2021-03-28 01:14
  • 提问者网友:寂寞梧桐
  • 2021-03-27 13:30
编一个程序,用递归函数 gcd(a,b)实现求两个整数 a,b 最大公因子的欧几里德算法。输入任意整数a,b,调用递
最佳答案
  • 五星知识达人网友:渊鱼
  • 2021-03-27 15:08
#include
int Gcd(int M,int N )
{
int Rem;
while( N > 0 )
{
Rem = M % N;
M = N;
N = Rem;
}
return M;
}
void main()
{
int a,b;
scanf("%d",&a);
scanf("%d",&b);
printf("%d\n",Gcd(a,b));
}
全部回答
  • 1楼网友:走死在岁月里
  • 2021-03-27 18:24
其实你可以去百度百科里面查一下这个算法是怎么样的,求2个数的最大公约数的话,我们知道这个道理:如果c是a与b的最大公约数,那么c也是(a%b取余数)与b的最大公约数(这里是如果a>b,如果a所以写函数时,用递归是很好做的。
int Gcd(int M,int N )
{ int Rem;
if(N!=0)
{ Rem = M % N;取余数,到最后一次是,必定是为0。Rem为0时的参数M值便是最大公约数。
gcd(N,Rem);
}
return M;
}
拿个简单的2,3来做例子。第一次运行GCD(2,3);
3!=0==>
rem=2%3=2。
gcd(3,2);
2!=0 ==>
rem=3%2=1
gcd(2,1);
1!=0 ==>
rem=2%1=0
gcd(1,0)
0!=0 不成立 ==>
跳出if语句,执行return 1;
得到最大公约数是1。
不知道我表达清楚了没。
  • 2楼网友:爱难随人意
  • 2021-03-27 17:43
不会
  • 3楼网友:罪歌
  • 2021-03-27 16:39
对不起,不会!
  • 4楼网友:琴狂剑也妄
  • 2021-03-27 15:38
#include
int Gcd(int M,int N )
{
int Rem;
while( N > 0 )
{
Rem = M % N;
M = N;
N = Rem;
}
return M;
}
void main()
{
int a,b;
scanf("%d",&a);
scanf("%d",&b);
printf("%d\n",Gcd(a,b));
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯