作者hellokidding (Bad Trip)
看板Python
標題[問題] 想知道這行程式碼的意思
時間Thu Feb 20 00:04:51 2020
大家好~
想問大家一個簡單問題
這是github上面100天學會python的題目
是關於寫一個判斷是否為質數的迴圈
from math import sqrt
num = int(input('輸入入一個正整数: '))
end = int(sqrt(num))
is_prime = True
for x in range(2, end + 1):
if num % x == 0:
is_prime = False
break
if is_prime and num != 1:
print('%d是質數' % num)
else:
print('%d不是質數' % num)
想問的是第四行的:is_prime = True
(1)這行是什麼意思
(2)為什麼要有這行
問題蠻菜的,請大家見諒
在此也感謝大家的回答!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.71.68.210 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1582128293.A.7B1.html
推 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