不知道你说的能看懂是个什么概念,我就按照数学的逻辑来写一个很长,但是很通俗易懂的吧
但愿我没有把公约数的概念记错![](static/image/smiley/ali/ali3.gif) 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]
|