欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

python 素數(shù)篩選法

張吉惟1年前7瀏覽0評論

Python是一門強大而簡潔的編程語言,有著豐富的庫和工具,使得我們能夠更輕松地編寫各種算法和程序。其中之一就是素數(shù)篩選法,下面我們就來了解一下它的實現(xiàn)方法:


def sieve(n):
primes = [True]*(n+1) #初始化所有的數(shù)都為質(zhì)數(shù)
primes[0],primes[1] = False,False #0和1不是質(zhì)數(shù),先排除掉
for i in range(2,int(n**0.5)+1): #從2遍歷到sqrt(n)
if primes[i]:
for j in range(i**2,n+1,i): #遍歷i的倍數(shù),將它們標記為非質(zhì)數(shù)
primes[j] = False
return [p for p in range(n+1) if primes[p]] #返回所有質(zhì)數(shù)的列表

該算法主要思想:首先將所有數(shù)都初始化為質(zhì)數(shù),然后從2到 sqrt(n) 遍歷每個數(shù),如果該數(shù)為質(zhì)數(shù),則將它的倍數(shù)全部標記為非質(zhì)數(shù)。最后返回所有質(zhì)數(shù)的列表。

下面我們來嘗試一下調(diào)用這個函數(shù),打印100以內(nèi)的所有質(zhì)數(shù):

primes = sieve(100)
print(primes) #輸出[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]

我們可以看到,這個函數(shù)計算出了100以內(nèi)的所有質(zhì)數(shù),并將它們存儲在一個列表中。

最后,對于算法的時間復雜度進行簡單分析:sieve(n)算法的時間復雜度為O(n*log(log(n))),其中n為篩選范圍。因此該算法雖然不是最優(yōu)解,但相比其他算法,已經(jīng)足夠高效。