使用for循環(huán)和if ... else語句檢查整數(shù)是否為質(zhì)數(shù)的示例。如果該數(shù)字不是質(zhì)數(shù),則在輸出中說明為什么它不是質(zhì)數(shù)。
要理解此示例,您應(yīng)該了解以下Python編程主題:
大于1的正整數(shù),除1外沒有其他因素,并且該數(shù)字本身稱為質(zhì)數(shù)。2、3、5、7等是質(zhì)數(shù),因?yàn)樗鼈儧]有任何其他因素。但是6不是素?cái)?shù)(它是合成的),因?yàn)? x 3 = 6。
# 程序檢查一個(gè)數(shù)字是否是質(zhì)數(shù) num = 407 # 從用戶那里獲取輸入 #num = int(input("輸入一個(gè)數(shù)字: ")) # 質(zhì)數(shù)是大于1 if num > 1: # 校驗(yàn)字符 for i in range(2,num): if (num % i) == 0: print(num,"不是質(zhì)數(shù)") print(i,"乘以",num//i,"等于",num) break else: print(num,"是質(zhì)數(shù)") # 如果輸入數(shù)字小于 # 或者等于1,它不是質(zhì)數(shù) else: print(num,"不是質(zhì)數(shù)")
輸出結(jié)果
407 不是質(zhì)數(shù) 11乘以37等于407
在此程序中,將檢查變量num是否為質(zhì)數(shù)。小于或等于1的數(shù)字不是質(zhì)數(shù)。因此,我們僅在num大于1時(shí)進(jìn)行。
我們檢查是否num可以被2到num-1的任何數(shù)整除。如果我們發(fā)現(xiàn)該范圍內(nèi)的因數(shù),則該數(shù)不是質(zhì)數(shù)。否則,該數(shù)字為質(zhì)數(shù)。
我們可以縮小尋找因數(shù)的數(shù)字范圍。
在上述程序中,我們的搜索范圍是2到num - 1。
我們可以使用范圍[2,num/2]或[2,num ** 0.5]。 后一個(gè)范圍基于這樣一個(gè)事實(shí),即復(fù)合數(shù)必須具有小于該數(shù)平方根的因子。 否則,該數(shù)字為質(zhì)數(shù)。
您可以在上面的源代碼中更改變量num的值,以檢查數(shù)字是否為其他整數(shù)的質(zhì)數(shù)。