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

作者: hellokidding (喔是喔真的假的)   2020-02-20 00:04:51
大家好~
想問大家一個簡單問題
這是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)為什麼要有這行
問題蠻菜的,請大家見諒
在此也感謝大家的回答!
作者: Philethan (PE)   2020-02-20 00:12:00
先假設是質數,然後開始用for迴圈判斷到底是不是質數對正整數N,若在(2,√N)內存在一數x,使N能被x整除,那就說x是N的因數,即N不是質數,is_prime = False。而在你找到這麼一個x時,你就確定它不是質數,所以剩下的(x,√N)內的整數就不需再被測試,也能直接跳出迴圈所以直接在 is_prime = False 後接上 break。然後就可以開始判斷了。一開始之所以需要有 is_prime = True,是因為你是藉由尋找是否存在著 num 的因數x來判斷num是否為質數一但你找到了,你就自然會說「不是」。因此你得考慮也就是 num %x == 0 永遠為 False,無法進入 if 設定is_prime = False 的情況,那麼就是得事先預設is_prime = True 了:找不到因數,則為質數
作者: moodoa3583 (金牌台灣啤酒)   2020-02-20 00:51:00
宣告有if_prime 這個變數,之後才能用這個變數來做判斷
作者: cuteSquirrel (松鼠)   2020-02-20 01:03:00
因為程式碼是用因數整除刪去法來尋找質數

Links booklink

Contact Us: admin [ a t ] ucptt.com