鱼C论坛

 找回密码
 立即注册
查看: 1777|回复: 4

[已解决]关于python求素数推导式的问题

[复制链接]
发表于 2017-4-5 23:50:45 | 显示全部楼层 |阅读模式

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

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

x
print[ p for p in range(2, 100) if 0 not in [ p% d for d in range(2, int(sqrt(p))+1)] ]
以上是输出2-100之间的素数的表达式

我有个疑问,这边为什么要if 0 not in?这个我不太懂 前后两个for我看的懂,就这个if 0 not in没看懂

然后有谁能帮我把这个列表推导式拆开写出来么?谢谢。。初学者 实在太难搞懂了
最佳答案
2017-4-6 10:58:46
if 0 not in 是成员操作符,那句话的意思是,如果p对从2到根号p+1这些数取余,结果都不为0,则p为素数。成员操作符后有一对中括号表示计算结果将被保存在列表中,这样做比起循环来判断是否被整除更清晰。希望能帮到你。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-4-6 07:35:19 From FishC Mobile | 显示全部楼层
当p是d的倍数的时候,p%d就是0啊,当然这时的p就不是素数了,p%d不是0的时候的p才是素数。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-6 10:58:46 | 显示全部楼层    本楼为最佳答案   
if 0 not in 是成员操作符,那句话的意思是,如果p对从2到根号p+1这些数取余,结果都不为0,则p为素数。成员操作符后有一对中括号表示计算结果将被保存在列表中,这样做比起循环来判断是否被整除更清晰。希望能帮到你。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-6 22:59:46 | 显示全部楼层
不如喝牛奶 发表于 2017-4-6 10:58
if 0 not in 是成员操作符,那句话的意思是,如果p对从2到根号p+1这些数取余,结果都不为0,则p为素数。成 ...

谢谢,听你这么一说我清晰了很多 谢谢非常感谢哈。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-6 23:00:17 | 显示全部楼层
jerryxjr1220 发表于 2017-4-6 07:35
当p是d的倍数的时候,p%d就是0啊,当然这时的p就不是素数了,p%d不是0的时候的p才是素数。

哈,听了你解释清楚些了 谢谢哦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-22 16:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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