乙個大於1的自然數,除了1和它本身外,不能被其他自然數(質數)整除(2, 3, 5, 7等),換句話說就是該數除了1和它本身以外不再有其他的因數。
首先我們來第乙個傳統的判斷思路:
def handlernum(num):
# 質數大於 1
if num > 1:
# 檢視是否有其他因子
for i in range(2, num//2+1):
if (num % i) == 0:
print(num,"不是質數")
break
else:
print(num, "是質數")
# 如果輸入的數字小於或等於 1,不是質數
else:
print(num, "不是質數")
if __name__ == '__main__':
# 使用者輸入乙個數字
num = int(input("請輸入乙個數字: "))
# 呼叫函式處理方法
handlernum(num)`在這裡插入**片`
其實上面迴圈中的else和if並不是成對的,而是和for併排的,當然for和else搭配出現並不少見,慢慢地會有所體會的,這段**的含義是,當for裡面的條件都不滿足時,就會執行else裡面的**。以上就是我們按照傳統的思路來解題,其實還有一種更快,更簡單的方法解題,那就是利用真或假來判斷。
#處理函式
def isprime(num):
#根據質數的定義,其必須大於0
if num == 1:
return false
#迴圈需要判斷的次數
for i in range(2, num // 2 + 1):
#如果該數有其他的因子返回false,即不是質數
if num % i == 0:
return false
return true
if __name__ == '__main__':
#輸入乙個數字
num = eval(input("請輸入乙個數,判斷是否為質數:"))
#呼叫方法(如果是質數返回true,否則返回false),列印結果
print(isprime(num))
這兩種方法大體都差不多,只不過這給我們以後解決問題提供了一種新的思路。 判斷是否為質數
程式接受兩個正整數的輸入,構成乙個閉區間,找出這個區間內的所有質數。判斷乙個數n是否為質數時,先對這個數開平方,隨後從2開始,迴圈到這個平行根,檢查其中的數能否整除數n,若能整除,則為合數,否則為質數。由於sqrt函式的返回值是double型別,為保證準確性 如sqrt 4 返回值可能是1.9999...
判斷是否為質數 c 實現)
01 判斷是否為質數 描述 輸入正整數a,判斷是否為質數 a 106 輸入一行乙個正整數a 輸出如果a是質數,則輸出a shi zhi shu 如果a不是質數,則輸出a bu shi zhi shu。格式請參考樣例 樣例輸入 31樣例輸出 31 shi zhi shu filename isprim...
是否為質數
思路為 1 2是質數,所有是偶數的都是2的倍數一定不是質數 除了2,偶數一定不是質數,因此我們不需要考慮任何偶數 2.從3開始考慮到n的奇數,其中某個數,如3的所有整數倍的數都不是質數,我們需要找到不小於n為止,即全部考慮到 這樣的話,當我們遍歷到9的時候,因為9不是第一次出現,他已經被3考慮為非質...