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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

LeetCode:Count Primes

發(fā)布時間:2023/12/9 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LeetCode:Count Primes 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Problem:

Description:

Count the number of prime numbers less than a non-negative number, n.

Credits:
Special thanks to @mithmatt for adding this problem and creating all test cases.

Solution:采用的為埃拉托斯特尼篩法?

算法描述:(來自百度百科)

要得到自然數(shù)n以內(nèi)的全部素數(shù),必須把不大于 的所有素數(shù)的倍數(shù)剔除,剩下的就是素數(shù)。 給出要篩數(shù)值的范圍n,找出以內(nèi)的素數(shù)。先用2去篩,即把2留下,把2的倍數(shù)剔除掉;再用下一個質(zhì)數(shù),也就是3篩,把3留下,把3的倍數(shù)剔除掉;接下去用下一個質(zhì)數(shù)5篩,把5留下,把5的吧倍數(shù)剔除掉;不斷重復(fù)下去......。 步驟 詳細列出算法如下:
  • 列出2以后的所有序列:
    • 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
    標(biāo)出序列中的第一個素數(shù),也就是2,序列變成:
    • 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
    將剩下序列中,劃掉2的倍數(shù),序列變成:
    • 2 3 5 7 9 11 13 15 17 19 21 23 25
    如果現(xiàn)在這個序列中最大數(shù)小于最后一個標(biāo)出的素數(shù)的平方,那么剩下的序列中所有的數(shù)都是素數(shù),否則回到第二步。 本例中,因為25大于2的平方,我們返回第二步: 剩下的序列中第一個素數(shù)是3,將主序列中3的倍數(shù)劃掉,主序列變成:
    • 2 3 5 7 11 13 17 19 23 25
    我們得到的素數(shù)有:2,3 25仍然大于3的平方,所以我們還要返回第二步: 現(xiàn)在序列中第一個素數(shù)是5,同樣將序列中5的倍數(shù)劃掉,主序列成了:
    • 2 3 5 7 11 13 17 19 23
    我們得到的素數(shù)有:2,3,5 。 因為23小于5的平方,跳出循環(huán). 結(jié)論:2到25之間的素數(shù)是:2 3 5 7 11 13 17 19 23。 class Solution { public:int countPrimes(int n) {vector<bool> flags(n-1,true);flags[0]=false;int res;int limit=sqrt(n);for(int i=2;i<=limit;i++){if(flags[i-1]){for(int j=i*i;j<n;j+=i){flags[j-1]=false;}}}for (int j = 0; j < n-1; ++j) {if (flags[j]) ++res;}return res;} };

    ?

    轉(zhuǎn)載于:https://www.cnblogs.com/xiaoying1245970347/p/4581896.html

    總結(jié)

    以上是生活随笔為你收集整理的LeetCode:Count Primes的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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