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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

埃氏筛法

發(fā)布時間:2025/3/19 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 埃氏筛法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

埃氏篩法

如果只對一個整數(shù)進行素性測試,通常O(√n)算法就足夠了。但如果要對許多整數(shù)進行素性測
試,則有更為高效的算法。

  • 要枚舉n以內(nèi)的素數(shù),就可以用埃氏篩法。這是一個與輾轉(zhuǎn)相處法一樣古老的算法。
  • 首先,將2到n范圍內(nèi)的所有整數(shù)寫下來。其中最小的數(shù)字2是素數(shù)。將表中所有2的倍數(shù)都劃去。表中剩余的最小數(shù)字是3,它不能被更小的數(shù)整除,所以是素數(shù)。再將表中所有3的倍數(shù)都劃去。依此類推,==如果表中剩余的最小數(shù)字是m時,m就是素數(shù)。然后將表中所有m的倍數(shù)都劃去。==像這樣反復操作,就能依次枚舉n以內(nèi)的素數(shù)。

    以下為代碼

    #include<iostream> #define maxn 9999999 using namespace std; int prime[maxn];//第i個素數(shù) bool is_prime[maxn];//is_prime【i】是true表示i是素數(shù) int solve(int n) {int res = 0;for (int i = 0; i <= n; i++)is_prime[i] = true;//初始化is_prime[0] = is_prime[1] = false;//0和1排除for (int i = 2; i <= n; i++){if (is_prime[i]){prime[res++] = i;for (int j = 2 * i; j <= n; j += i)//除去i的倍數(shù)is_prime[j] = false;}}return res; }int main() {int n;while (cin >> n){int res;res = solve(n);cout << res << endl;}return 0; }

    總結(jié)

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

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