鱼C论坛

 找回密码
 立即注册
查看: 2052|回复: 13

[已解决]求两个数的最大公约数

[复制链接]
发表于 2018-3-19 11:36:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x

求两个数的最大公约数,但是调用之后只能运行里面一个循环,也拿不到两个数的重复的数字,对说也没用,大神 ...

求两个数的最大公约数,但是调用之后只能运行里面一个循环,也拿不到两个数的重复的数字,对说也没用,大神 ...


求最大公约数,大神帮帮忙

我是想用函数来求两个整数的最大公约数,然后执行这个代码的时候,不能我想的那样执行,大神你看一下我的代码就懂了,是求两个整数的最大公约数。

是python写的
最佳答案
2018-3-19 12:59:10
你在and关键字的理解上出现了问题,and并不是求两个列表的交集。你的return(list1 and list2),只要list1不为空就和return list2是等价的。
其实求最大公约数函数一句就可以搞定啦:gcd = lambda x,y:x if y==0 else gcd(y, x%y)
给你附一个and详解:
1、当两个操作数均为逻辑值时,与我们通常理解的逻辑运算一致;
2、当第一个操作数为逻辑值,第二个操作数为其他类型时,执行以下规则:
    a and b:在a为false的时候,返回a,否则返回b。
    a or b: 在a为true的时候,返回a,否则返回b。
    总之,and与or返回的不仅有true/false的语义,还返回了它的值。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-3-19 11:38:14 | 显示全部楼层
把代码贴上来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-19 12:35:41 | 显示全部楼层
逻辑有点问题,
你的本意是不是用list1来存放x的约数,list2来存放y的约数?
求约数的方法应该是这样:
for i in range(2,x+1):
        if not (x%i):
            list1.append(i)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-19 12:59:10 | 显示全部楼层    本楼为最佳答案   
你在and关键字的理解上出现了问题,and并不是求两个列表的交集。你的return(list1 and list2),只要list1不为空就和return list2是等价的。
其实求最大公约数函数一句就可以搞定啦:gcd = lambda x,y:x if y==0 else gcd(y, x%y)
给你附一个and详解:
1、当两个操作数均为逻辑值时,与我们通常理解的逻辑运算一致;
2、当第一个操作数为逻辑值,第二个操作数为其他类型时,执行以下规则:
    a and b:在a为false的时候,返回a,否则返回b。
    a or b: 在a为true的时候,返回a,否则返回b。
    总之,and与or返回的不仅有true/false的语义,还返回了它的值。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-19 15:09:14 | 显示全部楼层
moc 发表于 2018-3-19 12:59
你在and关键字的理解上出现了问题,and并不是求两个列表的交集。你的return(list1 and list2),只要list1不 ...

原来是and上的错误。我就用现成的两个列表来证实后,得到了交集,然后我就用and了。  我那个程序可不可以别的替换and呀?

其实这是小甲鱼17讲动动手第二题,还需要变成输出格式为字符串形式
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-19 15:10:18 | 显示全部楼层
BngThea 发表于 2018-3-19 12:35
逻辑有点问题,
你的本意是不是用list1来存放x的约数,list2来存放y的约数?
求约数的方法应该是这样:

其实这是小甲鱼17讲动动手第二题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-19 15:11:19 | 显示全部楼层

其实这是小甲鱼17讲动动手第二题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-19 15:17:55 | 显示全部楼层
BngThea 发表于 2018-3-19 12:35
逻辑有点问题,
你的本意是不是用list1来存放x的约数,list2来存放y的约数?
求约数的方法应该是这样:

一开始是按这个顺序来做的,但是第二步用and得两个列表的交集就不行了,刚才大神告诉我and不能这样用。所以第三部我也就没有写。第三部是第二部得交集的情况下,再用序列的max方法就得了那个最大的公约数了,两个数的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-19 15:19:04 | 显示全部楼层
moc 发表于 2018-3-19 12:59
你在and关键字的理解上出现了问题,and并不是求两个列表的交集。你的return(list1 and list2),只要list1不 ...

一开始是按这个顺序来做的,但是第二步用and得两个列表的交集就不行了,刚才您告诉我and不能这样用。所以第三部我也就没有写。第三部是第二部得交集的情况下,再用序列的max方法就得了那个最大的公约数了,两个数的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-19 15:21:52 | 显示全部楼层
金刚 发表于 2018-3-19 15:10
其实这是小甲鱼17讲动动手第二题

一开始是按这个顺序来做的,但是第二步用and得两个列表的交集就不行了,刚才大神告诉我and不能这样用。所以第三部我也就没有写。第三部是第二部得交集的情况下,再用序列的max方法就得了那个最大的公约数了,两个数的。但是我的代码是完成不了我的想法,我只能看别人怎么写的了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-19 15:38:09 | 显示全部楼层
金刚 发表于 2018-3-19 15:09
原来是and上的错误。我就用现成的两个列表来证实后,得到了交集,然后我就用and了。  我那个程序可不可以 ...

求交集可以用带条件列表推导式[i for i in list1 if i in list2]
输出变成字符串直接用工厂函数str就行,可以写成str(max([i for i in list1 if i in list2]))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-19 16:01:41 | 显示全部楼层
moc 发表于 2018-3-19 15:38
求交集可以用带条件列表推导式
输出变成字符串直接用工厂函数str就行,可以写成str(max())

哇,列表推导式听过,基本的可以用,但是我真想不到带条件的。

工厂函数好像就是说内置函数BIF吗?

我什么时候能达到你这种程度呀,我现在只是在做小甲鱼的课后题,而且一些小甲鱼安排的题,一道难题,我就做好长时间。难道一直看小甲鱼的基础python课,就可以提高吗?我现在一直坚持做着呢。但是一直挺喜欢做,虽然花时间。现在不敢看小甲鱼的答案,看了就有些问题没发现就过了,这是我第一次这样讨论,这样我好像更发现了很多问题。

然后你们回答的答案不会周期性的清理掉吧,如果清理的话,我得在文档里保存一下你们的回答才行。要不然过段时间就忘了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-19 17:04:06 | 显示全部楼层
金刚 发表于 2018-3-19 16:01
哇,列表推导式听过,基本的可以用,但是我真想不到带条件的。

工厂函数好像就是说内置函数BIF吗?

工厂函数是几种特殊的BIF,像str,int,list都是。这些都东西接触多啦慢慢都会懂得。
相信自己,坚持就有收获。
任何事情都不是一蹴而就的,慢慢来,我也是看小甲鱼视频,坚持每天练习,慢慢就懂啦。
别人的答案一定要看懂,并试着从中学到一点点编程的知识或技巧。
最后,我也不是什么高手,也才学了没多长时间,有什么问题欢迎提问,大家一起交流。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-19 17:32:01 | 显示全部楼层
moc 发表于 2018-3-19 17:04
工厂函数是几种特殊的BIF,像str,int,list都是。这些都东西接触多啦慢慢都会懂得。
相信自己,坚持就有 ...

好,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-22 16:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表