/*编写一个函数,传入a,b两个int类型的变量,返回两个值的最大公约数。
例如:输入传入(0 , 5)函数返回5,传入(10 , 9)函数返回1,传入(12 , 4)函数返回4*/
#include <stdio.h>
int yue( int x, int y )
{
int temp,min;
//保证y总是最大的数
if( x > y )
{
temp = x;
x = y;
y = temp;
}
min = x;
//若最小数为0,直接返回大数
if( min == 0 )
return y;
//若不为0,从高往低减并取余直到求出最大公约数
while( min != 0 )
{
if ( y % min == 0 && x % min == 0)
return min;
min--;
}
}
int main()
{
int a,b;
printf("请输入要求的两个数:");
scanf("%d%d",&a,&b);
printf("最大公约数是:%d\n",yue(a,b));
return 0;
}
// 还有一种方法就是用辗转相除法实现,如下
#include <stdio.h>
int yue( int a, int b )
{
int temp;
int tem;
//保证除数不为0
if( b == 0 )
{
tem = a;
a = b;
b = tem;
}
//若一直有余数,辗转相除法就一直继续下去
while( temp )
{
temp = a % b;
a = b;
b = temp;
}
return a;
}
int main()
{
int a,b;
printf("请输入要求的两个数:");
scanf("%d%d",&a,&b);
printf("这两个数的最大公约数为:%d\n",yue(a,b));
return 0;
}