Python 板


LINE

各位前辈好, 最近在看python的一些入门书,第二本我是选《菲丝恩教你学会python》, 觉得他们编的不错,但有些小bug不确定是自已还是书本的问题,想请各位前辈帮忙指点 。 过去很少用巢状写质数,本来以为bug在缩排,但没检查到。 程式码如下: === i=j=1 for i in range(2,100,1): for j in range(2,int(i/j)+1): if(not i%j): break if j>i**0.5: print('%d is prime'%(i)) === 输出为: 2 is prime 3 is prime 7 is prime 11 is prime 13 is prime 17 is prime 19 is prime 23 is prime 29 is prime 31 is prime 37 is prime 41 is prime 43 is prime 47 is prime 53 is prime 59 is prime 61 is prime 67 is prime 71 is prime 73 is prime 79 is prime 83 is prime 89 is prime 97 is prime === 我试着在程式码里面加一些内容,呈现i跟j的状态, 但都不会跑出5是质数,会说i=5时,非质数,j=2。 不是很搞得清楚bug在哪里,还请前辈们慧眼点明~ --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 124.9.52.34
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1502260099.A.AFE.html
1F:→ nknuukyo: 使用版本为3.6.108/09 14:29
※ 编辑: nknuukyo (124.9.52.34), 08/09/2017 14:29:54
2F:推 tsoahans: int(i/j)+1改int(i/j)+208/09 15:32
3F:推 CaptainH: i/j 这是错的08/09 16:58
4F:推 stucode: 这问题网站上就有勘误资讯 不过我也不懂i/j那边的逻辑08/09 19:06
5F:→ bruce0209: for j 的前一行加上08/09 20:35
6F:→ bruce0209: print("i:"+str(i)+" j:2~"+str(int(i/j)+1))08/09 20:35
7F:→ bruce0209: if j>i**0.5的前一行加上08/09 20:36
8F:→ bruce0209: print(str(j)+" > "+str(i**0.5)+" ? ")08/09 20:36
9F:→ bruce0209: 应该就不会找不到BUG了吧...08/09 20:38
10F:→ bruce0209: 话说我也不懂i/j的原因 求解08/09 20:38
11F:→ mikapauli: 最小就近似根号i,随便给个上限而已吧。想法很奇怪就是08/09 20:51
12F:→ uranusjr: 我问一句这是完全照书上打的吗, 如果是的话感觉不算好书08/09 23:06
13F:→ uranusjr: 看了勘误感觉应该是照书上没错, 这种烂 code 也出书...08/09 23:10
14F:→ uranusjr: i/j 写成 int(i**0.5) 应该就看得懂了吧, 这两个等价08/09 23:11
15F:→ uranusjr: 把的最後一个 iteration j = (i/j-1)+1 移项应该就懂了08/09 23:13
16F:→ bruce0209: 懂原义了不过还是很诡异...08/09 23:25
17F:→ bruce0209: j^2=(i**0.5)^2然後移项的意思吧....08/09 23:26
18F:→ bruce0209: 可是 j1 = (i/j2-1)+1 在运作上j1和j2不相等吧...08/09 23:27
19F:推 TitanEric: 我觉得程式逻辑很奇怪…08/10 00:19
20F:→ uranusjr: 是啊, 因为 range 的参数是在初始化时就决定, 所以里面08/10 00:49
21F:→ uranusjr: 的 j 会是「前一个 i iteration」的 j 的最後一个值08/10 00:51
22F:→ uranusjr: 会觉得诡异奇怪是正常的, 因为写出这样的东西要嘛根本08/10 00:52
23F:→ uranusjr: 写错要嘛脑袋打结异於常人, 无论是哪种在一般公司都会被08/10 00:53
24F:→ uranusjr: 电到翻, 别说写书出来卖钱了...08/10 00:53
就几本买来的python书来看,菲丝恩这本很白话,而且例题的难度跟量都很适合初学者, 这也是这类书的两难,懂的人未必很会教,擅长教的人未必很懂。只是这个题目很例外, 我也看了一个上午....XD,一个数一个数代入,才比较理解,但也搞不懂为何选择这个方 式说明巢状结构。 另外如果加上print j,质数通常是算到接近一半的i,而非根号i,这点该书也说,只用f or的巢状结构要想的很清楚才行。 ※ 编辑: nknuukyo (101.15.85.252), 08/10/2017 08:10:21 ※ 编辑: nknuukyo (101.15.85.252), 08/10/2017 08:15:17
25F:→ bibo9901: 因为i是偶数时, j只会跑到2. 所以下一个i(奇数)时, 就会 08/10 08:31
26F:推 bibo9901: 使j介於2~i/2, 这个上限大於sqrt(i), 所以大部份是对的 08/10 08:33
27F:推 APM99: 这篇写法是很标准的求质数方法阿 不诡异吧 08/10 08:50
28F:推 APM99: 改成这样即可 : http://imgur.com/Z2axM0O 08/10 09:00
29F:→ APM99: 非常标准的作法 ~~只是2会被忽略掉 没啥差 08/10 09:00
30F:推 APM99: #忘了说 这篇一开始的写法5没印出来是被误差害死的... 08/10 09:23
31F:→ APM99: 尽量避免掉会有误差的写法 08/10 09:25
32F:→ stucode: 看了众位板友解说豁然开朗 原来是i/j是从j>sqrt(i)来的 08/10 10:15
33F:推 APM99: 我中午在发篇文解释一下 这篇方法是高中学的A*B=P求质数法 08/10 10:17
34F:→ nknuukyo: 感谢APM99大~ !! 08/10 10:18
35F:→ stucode: 不过原书code真的写得很不好 勘误版本虽然结果正确 08/10 10:19
36F:→ stucode: 建议原PO看过就好 08/10 10:20
37F:→ APM99: 我的写法是错的! 我没避免掉误差 08/10 10:31
38F:→ APM99: 可惜我现在没法发文 08/10 10:32







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BuyTogether站内搜寻

TOP