首页 » 编程之美 » 正文

[编程之美_2.7]最大公约数的问题

GCD: 最大公约数,能被m,n整数整除的最大的整数。
貌似很早的就有了欧几里得的辗转相除法法
GCD(x, y) = GCD(x, x%y)
x = k*y +b若d是x, y的最大公约数,那么d一定能被b整除,且d是x和b的最大公约数,b为x%y
代码如下:

// GCD
int GCD(int x, int y)
{
   return y == 0 ? x : GCD(y, x % y);
}

在编程之美书中有对时间上的优化:
1. 取模运算含有除法,比较耗时
2. 大整数下该如何优化

发表评论