推 Philethan: 先假設是質數,然後開始用for迴圈判斷到底是不是質數02/20 00:12
→ Philethan: 對正整數N,若在(2,√N)內存在一數x,使N能被x整除,那02/20 00:13
→ Philethan: 就說x是N的因數,即N不是質數,is_prime = False。02/20 00:14
→ Philethan: 而在你找到這麼一個x時,你就確定它不是質數,所以剩下02/20 00:14
→ Philethan: 的(x,√N)內的整數就不需再被測試,也能直接跳出迴圈02/20 00:15
→ Philethan: 所以直接在 is_prime = False 後接上 break。02/20 00:15
→ Philethan: 然後就可以開始判斷了。02/20 00:16
→ Philethan: 一開始之所以需要有 is_prime = True,是因為你是藉由02/20 00:16
→ Philethan: 尋找是否存在著 num 的因數x來判斷num是否為質數02/20 00:17
→ Philethan: 一但你找到了,你就自然會說「不是」。因此你得考慮02/20 00:17
→ Philethan: 也就是 num %x == 0 永遠為 False,無法進入 if 設定02/20 00:18
→ Philethan: is_prime = False 的情況,那麼就是得事先預設02/20 00:18
→ Philethan: is_prime = True 了:找不到因數,則為質數02/20 00:18
推 moodoa3583: 宣告有if_prime 這個變數,之後才能用這個變數來做判02/20 00:51
→ moodoa3583: 斷02/20 00:51
推 cuteSquirrel: 因為程式碼是用因數整除刪去法來尋找質數02/20 01:03
感謝大大的回應!瞬間茅塞頓開!大感謝!
※ 編輯: hellokidding (111.71.68.210 臺灣), 02/20/2020 01:21:33