问题
如何求两个数字的最大公约数?一般的想法是暴力,检测1,2,······n(最小的一个数),分别检测这些数中能被两个数整除的最大的那个数。还有一种辗转相除算法可求最大公约数
原理
例如 a=16,b=12
16除12=1余4
下面 12当被除数,4当除数,即:
12除4=3余0
那么4就是最大公约数
也不用担心两个数谁除以谁的问题,因为当12除16的时候,商为0,余数为12,下一次 又回到了16除12.
代码
void Get_GCD(int a,int b)
{
int r=a%b;
while(r>0)
{
b=a;
a=r;
r=a%b;
}
printf("%d\n",a);
}