- 辗转相除法
辗转相除法, 又名欧几里德算法(Euclidean algorithm),是求最大公约数的一种方法。方法是:用较大数除以较小数,再用出现的余数(第一余数)去除除数,再用出现的余数(第二余数)去除第一余数,如此反复,直到最后余数是0为止。那么最后的除数就是这两个数的最大公约数。
//最大公约数
int GCD(int m, int n)
{
int a, b;
a = (m >= n ? m : n);
b = (m >= n ? n : m);
if (a == b)
{
return a;
}
int r = a % b;
while (r != 0)
{
a = b;
b = r;
r = a % b;
}
return b;
}
int main()
{
int a, b;
scanf("%d %d", &a, &b);
printf ("%d", GCD(a, b));
return 0;
}