C语言用递归方法求a,b两个数的最大公约数公式如下

gcd(a,b)=b 当a%b==0时
gcd(a,b)=gcd(b,a%b) 当a%b!=0时
急要!

#include<stdio.h>

int gcd(int a,int b)/*必须保证a>=b*/
{
if(a%b==0)
return b;
else
return gcd(a,a%b);
}

void main()
{
int a,b,r;
printf("Input Two Numbers:\n");
scanf("%d%d",&a,&b);
if(a<b)/*如果a比b小,则置换过来*/
{
r=a;
a=b;
b=r;
}
r=gcd(a,b);
printf("%d and %d 's biggest divide number is : %d\n",a,b,r);
} /*调试通过,没问题,不调试不行*/
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-11-30
#include<stdio.h>
int gcd(int n,int m)
{
if(n%m==0)
return(m);
else
return(gcd(m,n%m));
}
void main()
{
int m,n,s;
printf("请输入两个正整数\n");
scanf("%d%d",&m,&n);
s=gcd(n,m);
printf("最大公约数是:%d",s);
}本回答被提问者采纳
第2个回答  2009-12-06
楼上的多此一举吧,好像不需要判断a,b的大小吧

C语言如何求两个数的最大公约数和最小公倍数
int gcd(int a,int b) \/\/最大公约数 {int r;do {r=a%b;a=b;b=r;}while(r);return a;} int lcm(int a,int b) \/\/最小公倍数 {return a*b\/gcd(a,b);} int main() \/\/主函数 {int a,b;scanf("%d%d",&a,&b);printf("最大公约数=%d\\n",gcd(a,b));pri...

编写递归函数求两个正整数a和b的最大公约数
不想吐槽百度的排版。

c语言怎样算两个数的最大公约数。
{ return b==0?a:GCD(b,a%b);\/\/此处使用了递归,如果b=0,返回a为最大公约数,否则,一直以b与a%b赋给函数,实现辗转相除 } int main(){ int a, b ; \/\/定义实参a, b int answer ; \/\/定义最后结果 scanf ( "%d%d" , &a, &b) ; \/\/取a,b的值 answer = GCD (a, b) ...

编写一个c语言程序 求两个整数的最大公约数
```c include <stdio.h> int gcd(int a, int b);int main() { int a, b, result;printf("请输入两个整数:");scanf("%d %d", &a, &b);result = gcd(a, b);printf("两个数的最大公约数为:%d", result);return 0;} int gcd(int a, int b) { if (a % b == 0) ...

python设计递归函数,求两个数的最大公约数
k2 = b % sub_common if k1 == k2 == 0:return sub_common else:sub_common = sub_common - 1 return common_data(a, b, sub_common)上面就是定义了一个递归函数求最大公约数 如 a = 16 b = 12 c = common_data(16,12,12) # 前两个参数就是需要求最大公约数的两个数,第三...

编一个程序,用递归函数 gcd(a,b)实现求两个整数 a,b 最大公因子的欧几...
其实你可以去百度百科里面查一下这个算法是怎么样的,求2个数的最大公约数的话,我们知道这个道理:如果c是a与b的最大公约数,那么c也是(a%b取余数)与b的最大公约数(这里是如果a>b,如果a<b反之)。所以写函数时,用递归是很好做的。int Gcd(int M,int N ){ int Rem;if(N!=0)...

用c语言求两个数的最大公约数
以下是用C语言实现求两个数的最大公约数的代码:include<stdio.h>intgcd(inta,intb){if(b==0)returna;elsereturngcd(b,a%b);}intmain(){int num1,num2,result;printf("请输入两个整数:\\n");scanf("%d%d",&num1,&num2);result=gcd(num1,num2);printf("最大公约数为:%d\\n",...

C语言中如何调用函数求最大公约数和最小公倍数
最小公倍数的公式是 a*b\/m m为最大公约数 因为 a=m*i; b=m*j;最小公倍数为 m*i*j 那么,下面就开始计算a和b的最大公约数。更相损减法:《九章算术·方田》作分数约简时,提到求最大公因数方法:反覆把两数的较大者减去较小者,直至两数相等,这数就是最大公因数。这方法除了把...

C语言编程如何实现求两个整数的最大公约数?
在C语言中,可以使用欧几里得算法(辗转相除法)来求解两个整数的最大公约数(GCD)。该算法的基本思想是:用较大的数除以较小的数,将得到的余数作为新的被除数,原来的除数作为新的除数,继续进行相同的操作,直到余数为0,此时最后的除数就是最大公约数。以下是C语言实现求两个整数的最大公约数的...

C语言程序设计如何求最大公约数
最大公约数算法:(1)辗转相除法 两整数a和b:① a%b得余数c ② 若c=0,则b即为两数的最大公约数,结束 ③ 若c≠0,则a=b,b=c,再回去执行① (2)相减法 两整数a和b:① 若a>b,则a=a-b ② 若a<b,则b=b-a ③ 若a=b,则a(或b)即为两数的最大公约数,结束 ④ 若...

相似回答