使用Python求素數

2021-08-20 04:50:57 字數 661 閱讀 8992

#素數,只能被1和它自身整除的數

n = int(input("輸入整數:")

if n<2:

print(n, "不是素數")

for i in range(2,n):

if n%i == 0:

print("這個數不是素數")

break

else:

print("這個數是素數")

以上程式在進行判斷時存在乙個邏輯錯誤, 當 n%i == 0 不成立, 且迴圈沒有結束時, 也會執行else下面的列印, 

比如n = 9, 當i=2時, if條件不成立, 就執行else下面的語句, 列印出這個數是素數, 但是迴圈還沒有結束, 在i= 3時, if條件成立, 即9不是素數, 所以這個程式就不應該列印出"這個數是素數",

以下程式是我從新寫的:

prime = int(input("判斷素數:"))

if prime==1:

print('1不是素數')

for i in range(2,prime):

if prime%i==0:

print(prime,'不是素數')

break

if i==(prime-1):

print(prime,'是素數')

求素數 Python實現

用filter求素數 計算素數的乙個方法是埃氏篩法,它的演算法理解起來非常簡單 首先,列出從2開始的所有自然數,構造乙個序列 2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,取序列的第乙個數2,它一定是素數,然後用2把序列的2的倍數篩掉 3,4,5,...

Python求質數 素數

先寫乙個裝飾器d1.py,為了測試執行時間 from functools import wraps import time deff1 func wraps func deff2 begin time.time func end time.time print cost end begin retu...

python中用filter求素數

用filter求素數 生成器,生成乙個無限序列 def odd iter n 1while true n n 2 yieldn 篩選函式 def not divisible n return lambda x x n 0 生成器,不斷返回下乙個素數 defprimes yield 2it odd i...