欧几里德和stein两种算法求最大公约数
来源:互联网 发布:印章大师安装软件 编辑:程序博客网 时间:2024/05/16 14:24
1.欧几里德
原理:`gcd(x,y) = gcd(y,x%y)`
2.stein
原理:`gcd(k*x,k*y) = k*gcd(x,y)`
Python实现
#欧几里德辗转相除法求最大公约数def euclidGcd(x,y): assert x >= 0 and y >= 0 if y == 0: return x return euclidGcd(y,x % y)#stein算法求最大公约数def steinGcd(x,y): assert x >= 0 and y >= 0 if x == 0 or y == 0: return abs(x-y) if x % 2 == 0 and y % 2 == 0: return 2 * steinGcd(x/2,y/2) elif x % 2 == 0: return steinGcd(x/2,y) elif y % 2 == 0: return steinGcd(x,y/2) else: return steinGcd(abs(x-y),min(x,y))if __name__ == '__main__': for x,y in [(2,6),(6,2),(3,9),(2,5),(12,24)]: print 'euclid:%-2d stein:%-2d' % (euclidGcd(x,y),steinGcd(x,y))
输出
>>> euclid:2 stein:2 euclid:2 stein:2 euclid:3 stein:3 euclid:1 stein:1 euclid:12 stein:12
0 0
- 欧几里德和stein两种算法求最大公约数
- 求最大公约数的两种算法(Euclid&&Stein)
- Stein算法 求最大公约数
- stein算法求最大公约数
- Stein算法求最大公约数
- Stein算法求最大公约数
- 最大公约数(Gcd)两种算法(Euclid && Stein)
- 欧几里德算法和stein算法
- 计算最大公约数的两种算法:辗转相除法和Stein算法
- 欧几里德算法求最大公约数
- 欧几里德算法求最大公约数
- 欧几里德算法求最大公约数
- 欧几里德算法 求最大公约数
- 欧几里德算法--求最大公约数
- 欧几里德算法求最大公约数
- 欧几里德算法求最大公约数
- 欧几里德算法求最大公约数
- 欧几里德算法求最大公约数
- 手把手教你玩转ARP包(二)
- unity3d 地形系统与天空盒子
- ios8.0 推送中的 categories
- ARM, .map文件中,分散加载的符号表,我TM终于看懂啦!!
- QEMU KVM
- 欧几里德和stein两种算法求最大公约数
- 对目录下的文件按时间进行排序
- 编程能力七段论
- DataView RowFilter 的语法
- 【LeetCode】 Rotate List 循环链表
- Android 4.4 Launcher3源码分析——导入eclipse进行调试
- 数据库_脚本
- 第3周项目2-三角形类2
- java 字符类(Character)