编一个程序,用递归函数 gcd(a,b)实现求两个整数 a,b 最大公因子的欧几里德算法.输入任意整数a,b,调用递
来源:学生作业帮助网 编辑:六六作业网 时间:2025/02/08 04:24:01
编一个程序,用递归函数 gcd(a,b)实现求两个整数 a,b 最大公因子的欧几里德算法.输入任意整数a,b,调用递
编一个程序,用递归函数 gcd(a,b)实现求两个整数 a,b 最大公因子的欧几里德算法.输入任意整数a,b,调用递
编一个程序,用递归函数 gcd(a,b)实现求两个整数 a,b 最大公因子的欧几里德算法.输入任意整数a,b,调用递
#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));
}
#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));
}
其实你可以去百度百科里面查一下这个算法是怎么样的,求2个数的最大公约数的话,我们知道这个道理:如果c是a与b的最大公约数,那么c也是(a%b取余数)与b的最大公约数(这里是如果a>b,如果a所以写函数时,用递归是很好做的。
int Gcd(int M,int N )
{ int Rem;
\x09if(N!=0)
\...
全部展开
其实你可以去百度百科里面查一下这个算法是怎么样的,求2个数的最大公约数的话,我们知道这个道理:如果c是a与b的最大公约数,那么c也是(a%b取余数)与b的最大公约数(这里是如果a>b,如果a所以写函数时,用递归是很好做的。
int Gcd(int M,int N )
{ int Rem;
\x09if(N!=0)
\x09{ Rem = M % N;取余数,到最后一次是,必定是为0。Rem为0时的参数M值便是最大公约数。
\x09\x09gcd(N,Rem);
}
\x09return 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。
不知道我表达清楚了没。
收起
不会
对不起,不会!