欧几里得算法–求最大公约数
内容:gcd(x,y) = gcd(y,x mod y)
证明:假设求 x , y 最大公约数 m,且 x > y,令 a = x / y , b = x % y
则有: x = y*a + b
因为 x 和 y 均能被m整除,易得 b 也能被 m 整除,求x与y的最大公约数就是求y 和 b 的最大公约数,即 gcd(x,y) = gcd(y,x mod y)
分治算法
通过介绍三个实例来理解
- 假设你是农场主,有一小块土地。 你要将这块地均匀地分成方块,且分出的方块要尽可能大。
首先直观的想法就是求边长的最大公约数,那怎么求解呢?如何采用分治法?
将这个大的田地以宽为边划分出正方形,如图:
再将余下的土地按照刚才的方式继续划分,
那么基线条件是直到边的长度恰好是宽的长度的整数倍,此时的正方形是
“适用于这小块地的最大方块,也是适用于整块地的最大方块”</