最大公约数
最大公约数:即两个数据中公共约数的最大者。
求解的方式比较多,暴力穷举、辗转相除法、更相减损法、Stein算法算法
此处主要介绍:辗转相除法
辗转相除法:辗转相除法是一种简单的求最大公约数的方法,其基本思想是:用较大的数除以较小的数得到商和余数,再用较小的数除以商得到新的商和余数,如此反复,直到余数为零为止。最后得到的积即为最大公约数。
例如:求985和457的最大公约数:
985÷457=2(余71)
457÷71=6(余31)
71÷31=2(余9)
31÷9=3(余4)
9÷4=2(余1)
4÷1=4(余0)
所以985和457的最大公约数为4
思路:
例子:18和24的最大公约数
第一次:a = 18 b = 24 c = a%b = 18%24 = 18
循环中:a = 24 b=18
第二次:a = 24 b = 18 c = a%b = 24%18 = 6
循环中:a = 18 b = 6
第三次:a = 18 b = 6 c=a%b = 18%6 = 0
循环结束
此时b中的内容即为两个数中的最大公约数,即6
//方法一
int main()
{
int a = 18;
int b = 24;
int c = 0;
while(c=a%b)
{
a = b;
b = c;
}
printf("%d\n", b);
return 0;
}