一、欧几里得算法,辗转相除法
算法描述(引自百度):以除数和余数反复做除法运算,当余数为 0 时,取当前算式除数为最大公约数。
例:
1997 / 615 = 3 (余 152)
615 / 152 = 4(余7)
152 / 7 = 21(余5)
7 / 5 = 1 (余2)
5 / 2 = 2 (余1)
2 / 1 = 2 (余0)
至此,最大公约数为1
//最大公约数 欧几里得算法——辗转相除法
int gsdFunction(int a, int b)//gcd greatest_common_divisor
{
int tmp = 1;
while (1)
{
tmp = a % b;//取余赋值给临时变量
a = b;//把除数放到被除数位置上//所以当余数为0时,应该返回的是a
b =tmp;//把余数放到除数位置上
if (tmp == 0)
{
return a;
break;
}
}
}
int main()
{
int a,b,c;
scanf("%d %d", &a, &b);
c=gsdFunction(a, b);
printf