|
发表于 2017-3-26 01:25:06
|
显示全部楼层
不知道你说的能看懂是个什么概念,我就按照数学的逻辑来写一个很长,但是很通俗易懂的吧
但愿我没有把公约数的概念记错
- def gcd(x,y):
- # 公约数不止一个,所以应该是个列表,先定义这个列表为the_nums
- the_nums = []
- # 得到x的所有约数,也是个列表,定义为x_nums
- x_nums = []
- # 把a当做x的约数,那a肯定满足如下条件,即2<=a<=x,表达方式如下
- for a in range(2,x+1):
- # 约数还有一个条件就是整除,表达成这样
- if x % a == 0:
- # 好了,通过上述2个条件就得到了所有满足条件的a,也就是x的所有约数,加入的列表中
- x_nums.append(a)
- # 同理,可以得到y的约数集合
- y_nums = []
- for b in range(2,y+1):
- if y % b == 0:
- y_nums.append(b)
- # 接下来就是公约数了,定义为t,它应该满足同时在x和y的约数集合中,表达如下
- for t in x_nums:
- if t in y_nums:
- # 把所有满足条件的t加入到最开始定义的列表中
- the_nums.append(t)
- return the_nums
- # 测试一下:
- print(gcd(6,4))
- # >>>[2]
- print(gcd(20,40))
- # >>>[3]
复制代码 |
|