[問題] 想知道這行程式碼的意思

看板Python作者 (Bad Trip)時間5年前 (2020/02/20 00:04), 5年前編輯推噓3(3013)
留言16則, 3人參與, 5年前最新討論串1/1
大家好~ 想問大家一個簡單問題 這是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

02/20 00:12, 5年前 , 1F
先假設是質數,然後開始用for迴圈判斷到底是不是質數
02/20 00:12, 1F

02/20 00:13, 5年前 , 2F
對正整數N,若在(2,√N)內存在一數x,使N能被x整除,那
02/20 00:13, 2F

02/20 00:14, 5年前 , 3F
就說x是N的因數,即N不是質數,is_prime = False。
02/20 00:14, 3F

02/20 00:14, 5年前 , 4F
而在你找到這麼一個x時,你就確定它不是質數,所以剩下
02/20 00:14, 4F

02/20 00:15, 5年前 , 5F
的(x,√N)內的整數就不需再被測試,也能直接跳出迴圈
02/20 00:15, 5F

02/20 00:15, 5年前 , 6F
所以直接在 is_prime = False 後接上 break。
02/20 00:15, 6F

02/20 00:16, 5年前 , 7F
然後就可以開始判斷了。
02/20 00:16, 7F

02/20 00:16, 5年前 , 8F
一開始之所以需要有 is_prime = True,是因為你是藉由
02/20 00:16, 8F

02/20 00:17, 5年前 , 9F
尋找是否存在著 num 的因數x來判斷num是否為質數
02/20 00:17, 9F

02/20 00:17, 5年前 , 10F
一但你找到了,你就自然會說「不是」。因此你得考慮
02/20 00:17, 10F

02/20 00:18, 5年前 , 11F
也就是 num %x == 0 永遠為 False,無法進入 if 設定
02/20 00:18, 11F

02/20 00:18, 5年前 , 12F
is_prime = False 的情況,那麼就是得事先預設
02/20 00:18, 12F

02/20 00:18, 5年前 , 13F
is_prime = True 了:找不到因數,則為質數
02/20 00:18, 13F

02/20 00:51, 5年前 , 14F
宣告有if_prime 這個變數,之後才能用這個變數來做判
02/20 00:51, 14F

02/20 00:51, 5年前 , 15F
02/20 00:51, 15F

02/20 01:03, 5年前 , 16F
因為程式碼是用因數整除刪去法來尋找質數
02/20 01:03, 16F
感謝大大的回應!瞬間茅塞頓開!大感謝! ※ 編輯: hellokidding (111.71.68.210 臺灣), 02/20/2020 01:21:33
文章代碼(AID): #1UJLobUn (Python)
文章代碼(AID): #1UJLobUn (Python)