Python 板


LINE

※ 引述《v3dys6f3a3j5 (San)》之铭言: : 这是我们老师给的题目和解答 : 我想问为什麽他求是否为质数是用 if is_prime(n) : 不是用%整除去算 : 我听我们老师说这是一个函式 : 问题是我用print执行之後 : 是错误 : 我去网站上找质数的求法 : 都是用整除去求的 你的问题应该是对函式运作不熟悉 你们老师的确是用整除去求的... "if n % i == 0" 就是去对每个i(2, 3, 4... n-1) 一个一个去除看看看有没有整除 有整除就是找到一个因子 那麽n就不是质数 比如n = 35 我要试试看n=35这个数是不是质数 於是使用is_prime(35)进去测 方法就是我去测看看他有没有可以整除的因子 於是从2开始慢慢往上找...2阿 3阿 4阿 去除35除看看能不能整除 中途如果发现: 阿哈! 我找到了一个数i = 5可以把35整除 於是我後面不用再测啦 直接回传一个答案"不是"(False) 然後那个回圈就不再执行 (return等於是跳出回圈 回圈以及後面的东西等等都不再执行 包括後面那个return True) 如果最後 一直找不到 找到34 这个回圈都没有找到因子 那麽最後只好执行下一个指令: return True(对 他是质数) 後面那个max_prime是个递回函式 大意就是如果:if is_prime(n) 发现n的确是个质数 那麽就不用继续往下执行啦 废话不多说 这个函式就return n (也就是回传n 给print 印出来) 但如果我发现n 不是质数呢? 比如你要找的区间是[10, 100]之间最大的质数 我发现 100不是阿 那麽好吧 我就找看看99是不是(max_prime(10, 99)) 结果我发现他也不是 往下找 直到找到97 符合了base case: if is_prime(97) 於是我把97传出去给print印 之後的程式就不执行了 如果看的懂上面的 那麽你会发现这支程式可以改的更快(python很慢的) 尤其递回要一直定住不动 再发个记忆体给下一个递回函式用 很浪费时间 因此如果你可以用以下的逻辑改程式 程式就会变快 1. max_prime递回回圈return max_prime(m, n-1)不要一个一个去算 而是当(n-1)%2==1 时才传进去: elif m<n and (n-1)%2==1 原因在於质数除了2以外绝对不是偶数 我不用浪费时间去check看看98 96 94这些数是不是 偶数. 2.既然1.已经剃掉n是偶数的可能性 那麽is_primer的for i 回圈也不用一个一个去跑 我只需要跑i=奇数的回圈就好了 i=(3,5,7,9.....) hint: 偶数的倍数 尾数必然是偶数 3.把is_pime()内的range(2, n) 改成 range(2, sqrt(n) + 1) 这三个改了之後 对於n很大的状况会有非常巨大的速度差距. : 高手可以帮我解答一下吗 : 题目d.写一完整函式,计算[m,n]之间最大的质数;如果该质数不存在,则传回-1。 : def is_prime(n): :   for i in range(2,n): :     if n%i==0: :       return False :   return True : def max_prime(m,n): :   if is_prime(n): :     return n :   elif m<n: :     return max_prime(m,n-1) :   return -1 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 111.240.163.93 ※ 编辑: DreamLoser 来自: 111.240.163.93 (01/13 12:19)







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灯, 水草

请输入看板名称,例如:Boy-Girl站内搜寻

TOP