TQC+ 程式語言Python 507 質數
題目說明:
請撰寫一程式,讓使用者輸入一個整數x,並將x傳遞給名為compute()的函式,此函式將回傳x是否為質數(Prime number)的布林值,接著再將判斷結果輸出。如輸入值為質數顯示【Prime】,否則顯示【Not Prime】。
範例輸入1
3
範例輸出1
Prime
範例輸入2
6
範例輸出2
Not Prime
範例輸入3
1
範例輸出3
Not Prime
範例輸入4
0
範例輸出4
Not Prime
範例輸入5
-5
範例輸出5
Not Prime
程式碼:
def compute(x):
b = True
if x < 2:
b = False
for i in range(2 , x):
if x % i == 0:
b = False
break
return b
x = eval(input())
if compute(x):
print('Prime')
else:
print('Not Prime')
6 則留言
自動引用通知:
文興
用9下去跑,為Prime
9不是質數,怎麼修正?
for i in range(2,x+1):
if x % 2 ==0: #改成 if x % 2==0 and x % 3 ==0 嗎?
b=False
break
return b
文興
應是改成or
for i in range(2,x+1):
if x % 2 ==0: #改成 if x % 2==0 or x % 3 ==0 嗎?
b=False
break
return b
JamesBang
你好,在 if 判斷式那兒,只要用 x % i 就好,因為用 % 2 的話,以 3 為例:3 除以 2 的餘數絕對不會為 0,因此變數 b 會是 True,在最後的判斷時,輸出就只會是 Prime。
用變數 i ,它就是從 2 開始,一直到我們輸入的數,全部都計算一遍
Liker Land 要註冊才能按讚,不用錢!謝謝
JamesBang
還有你迴圈的範圍要改成 for i in range(2, x)
因為 for i in range(2,x+1) 的範圍為 2 ~ 5 (假設你輸入 5)
那麼當迴圈執行最後一次時,底下的判斷式就會變成
x % i -> 5 % 5 = 0
迴圈 b 就會變成 False,在最後輸出時就是 Not Prime,但是 5 是質數應該要輸出 Prime 才對。
所以你的迴圈範圍要設定成 range(2, x),這樣輸入 5 的話,範圍就是 2 ~ 4。
文興
我有下Liker Land,但無法按讚,是因為LIKE沒有錢嗎?