根据最大公约数的如下3条性质,采用递归法编写计算最大公约数的函数Gcd(),在主函数中调用该函数计算并输出从键盘任意输入的两正整数的最大公约数。
性质1 如果a>b,则a和b与a-b和b的最大公约数相同,即Gcd(a, b) = Gcd(a-b, b)
性质2 如果b>a,则a和b与a和b-a的最大公约数相同,即Gcd(a, b) = Gcd(a, b-a)
性质3 如果a=b,则a和b的最大公约数与a值和b值相同,即Gcd(a, b) = a = b``
#include <stdio.h>
int Gcd(int a,int b);
int main()
{
int gcd,a,b;
printf("Input a,b:");
scanf("%d,%d",&a,&b);
gcd=Gcd(a,b);
if (-1==gcd)
printf("Input number should be positive!\n");
else
printf("Greatest Common Divisor of %d and %d is %d\n",a,b,gcd);
}
int Gcd(int a, int b)
{
if(a<0||b<0)
return -1;
if(a>b)
return Gcd(a-b, b);
else if(b>a)
return Gcd(a, b-a);
else if(a==b)
return a ;
}