必须学好编程 发表于 2022-10-9 21:46:34

17讲 欧几里得求最大公约数,没按照欧几里得写,但是还是没写对

def hell(x,y):
      GYS = 1
      a = 1
      while a<x :
      if x%a == 0 and y%a == 0:
          GYS = a
      a+=1
      return GYS

print(hell(12,18))

欧几里得的方法会了,自己的写不对

jackz007 发表于 2022-10-9 21:53:19

本帖最后由 jackz007 于 2022-10-9 22:00 编辑

      很有创意的思路,试试这个
def hell(x , y):
    GYS , a = 1 , 2                     # a 的初值有修改
    while a <= x and a <= y :
      if x % a == 0 and y % a == 0:   # 循环条件有修改
            GYS = a
      a += 1                        # 这一句写法有错,已经修正
    return GYS

print(hell(12,18))

傻眼貓咪 发表于 2022-10-9 21:56:20

本帖最后由 傻眼貓咪 于 2022-10-9 21:57 编辑

# a > b
Euclid = lambda a, b: a if not b else Euclid(b, a%b)

必须学好编程 发表于 2022-10-9 22:07:32

傻眼貓咪 发表于 2022-10-9 21:56


谢谢大佬,感谢你的好意,不过还没学到这里了{:5_107:}没太理解{:5_96:}

必须学好编程 发表于 2022-10-9 22:12:53

jackz007 发表于 2022-10-9 21:53
很有创意的思路,试试这个

谢谢耐心解答,明白了,我这全是格式错了{:5_109:}
页: [1]
查看完整版本: 17讲 欧几里得求最大公约数,没按照欧几里得写,但是还是没写对