求最大公约数
求最大公约数,常用三种方法,一是,暴力求解法,二是,辗转相除法,三是,更相减损术。
我们知道最大公约数,不会大于两个数的最小值。拿到两个数中较小值时,可以取余来判断是否可以除尽。以下代码作为参考。
int main()
{
//暴力求解法
int a = 13;
int b = 11;
if (a > b)
{
int tmp = a;
a = b;
b = tmp;
}
while (a)
{
if (b % a == 0)
{
printf("%d ", a);
break;
}
a--;
}
return 0;
}
int main()
{
int a = 13;
int b = 11;
int c = 0;
//辗转相除法
while (c = a % b)
{
a = b;
b = c;
}
printf("%d ", b);
return 0;
}
int main()
{
int a = 13;
int b = 11;
int c = 0;
//更相减损术
while (c = a - b)
{
c = abs(c);//防止有负数
a = b;
b = c;
}
printf("%d ", b);
return 0;
}