两个正整数的最大公约数是能够整除这两个整数的最大整数
输入样例:50 15
输出样例:5
方法一:普通函数实现
代码实现:
#include <stdio.h>
int gcd(int x,int y);
int main()
{
int x,y;
scanf("%d %d",&x,&y);
printf("%d\n",gcd(x,y));
return 0;
}
int gcd(int x,int y)
{
while(y != 0)
{
int temp = x % y;
x = y;
y = temp;
}
return x;
}
运行结果:
方法二:递归函数实现
代码实现:
#include <stdio.h>
int gcd(int x,int y);
int main()
{
int x,y;
scanf("%d %d",&x,&y);
printf("%d\n",gcd(x,y));
return 0;
}
int gcd(int x,int y)
{
if(x < y)
{
int temp = x;
x = y;
y = temp; //y要是较小的数
}
if(y == 0) //特殊情况 ,基准条件
{
return x;
}
return gcd(y , x % y); //最小公倍数:return x * y / gcd(y , x % y);
}
运行结果: