之前我也实现过最大公约数的求解,采用了一种近乎穷举的方式来实现的。一次坐火车的时候带着高德纳的《计算机编程艺术》第一卷看了下,英语退步的厉害没有看懂太多东西,倒是看到了一个求取最大公约数的算法。看完之后,一下子觉得自己之前的算法是多么差。

       下面使用Python简单进行一下算法实现:

defCommDevisor(m,n):

       r = m % n

       while r != 0:

              m = n

              n = r

              r = m % n

       return n


print(CommDevisor(120,25))

       以上程序执行的结果如下:

==============RESTART: E:\WorkSpace\算法\计算机编程艺术\CommDevisor.py ==============

5

       再做一点其他的测试,计算的记录如下:

>>>CommDevisor(24,120)

24

>>>CommDevisor(25,120)

5

>>>CommDevisor(120,24)

24

>>>CommDevisor(120,120)

120

       从上面的结果看,算法还是很准确的。这段算法从数学上也能够推导出严密的结论,至于如何推导,后续做一下理解之后再做一次总结。