大家好~
想問大家一個簡單問題
這是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 了:找不到因數,則為質數