最大公约数和最小公倍数
今天用到了,又忘了,复习下。
1 def gcd(a,b):
2 '''Greatest Common Divisor最大公约数:辗转相除法递归'''
3 if a < b:
4 a, b = b, a
5 if b != 0:
6 return gcd(b,a%b)
7 else:
8 return a
9
10 def gcd2(a,b):
11 '''辗转相除法非递归'''
12 if a < b:
13 a, b = b, a
14 while b != 0:
15 c = a % b
16 a = b
17 b = c
18 return a
19
20 def gcd3(a,b):
21 '''这个应该就是最原始的思想了:两个整数的最大公约数等于其中较小的数和两数的差的最大公约数'''
22 while a != 0:
23 if a >= b:
24 a -= b
25 else:
26 a, b = b, a
27 return b
28
29 def lcm(a,b):
30 '''Least Common Multiple 最小公倍数 = a * b / 最大公约数'''
31 return a * b / gcd(a,b)
作者:北冥
出处:http://www.cnblogs.com/beiming/
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。