日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python力扣刷题记录——204. 计数质数

發(fā)布時(shí)間:2024/3/26 python 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python力扣刷题记录——204. 计数质数 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

題目:

統(tǒng)計(jì)所有小于非負(fù)整數(shù) n 的質(zhì)數(shù)的數(shù)量。

方法一:
暴力法

class Solution:def countPrimes(self, n: int) -> int:count = 0if n > 1:for i in range(2, n):flag = Truefor j in range(2, i):if i % j == 0:flag = Falsebreakif flag:count += 1return count

方法雖簡(jiǎn)單,但是時(shí)間超時(shí)了,無(wú)法通過(guò)測(cè)試

方法二:
厄拉多塞篩法,力扣上看到大神分享的方法:
比如說(shuō)求20以內(nèi)質(zhì)數(shù)的個(gè)數(shù),首先0,1不是質(zhì)數(shù).2是第一個(gè)質(zhì)數(shù),然后把20以內(nèi)所有2的倍數(shù)劃去.2后面緊跟的數(shù)即為下一個(gè)質(zhì)數(shù)3,然后把3所有的倍數(shù)劃去.3后面緊跟的數(shù)即為下一個(gè)質(zhì)數(shù)5,再把5所有的倍數(shù)劃去.以此類推.

class Solution: def countPrimes(self, n: int) -> int:if n < 3:return 0else:output = [1] * n # 產(chǎn)生一個(gè)元素全部為1的列表output[0], output[1] = 0, 0 # 0,1不是質(zhì)數(shù),直接賦值為0for i in range(2, int(n**0.5)+1): # 從2開(kāi)始,output[2]==1表示第一個(gè)質(zhì)數(shù)是2,然后將2的倍數(shù)對(duì)應(yīng)的索引全部賦值為0,此時(shí)下一個(gè)數(shù)output[3]==1,也是表示質(zhì)數(shù),同樣劃去3的倍數(shù),以此類推if output[i] == 1:output[i*i:n:i] = [0] * len(output[i*i:n:i])#最后output中的數(shù)字表示該位置上的數(shù)為質(zhì)數(shù),然后求和即可return sum(output)

總結(jié)

以上是生活随笔為你收集整理的python力扣刷题记录——204. 计数质数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。