埃式篩選法

2022-04-05 16:32:41 字數 500 閱讀 4654

題目:給定整數n,請問n以內有多少個素數?

n<=1e6

樣例輸入1

11輸出

5樣例輸入2

1000000

輸出78498

演算法詳解

i從2開始遍歷,2肯定是素數那麼他的倍數肯定不是素數,標記下來,然後遍歷沒被標記的數。遍歷完所有就只剩下沒被標記的素數了。

參考**

#include #include 

using

namespace

std;

const

int max_n=1000000

;int is_prime[max_n+1

];int prime[max_n+1

];int sieve(int

n);int

main()

int sieve(int

n) }

}return

sum;

}

埃氏篩選法

思想 假設全部數均為素數,再通過剔除掉所有合數,剩下的數肯定為素數 數學原理 任何正整數 除1外 所有正整數均能分解為素數的乘積。用途 快速找1 k中所有素數 優化 對於乙個合數k,必能在 2,sqrt k 區間找到乙個素數因子 1 k中,合數k最大,選取的因子區間 2,sqrt k 包含了其他數a...

埃氏篩選法

1.引例 博主第一次見到這個演算法是在兩個周以前,因為團隊要求提前回來培訓資料結構,所以過完元宵節沒幾天,便匆忙往學校趕,無奈囊中羞澀,只能訂半夜的機票,下了飛機取完行李後,便坐在旁邊的椅子上,像成功人士一般拿出電腦學習,等待著第一班地鐵,無意中看到這個演算法,便開始研究起來。2.定義 埃拉託斯特尼...

埃式素數篩選 filter

把廖雪峰 的描述稍微修改了一下 計算素數的乙個方法是埃式篩法,它的演算法理解起來非常簡單 首先,構造出乙個奇數序列 3,5,7,9,11,13,15,17,19,21,23,25.先返回2 取序列的第乙個數3,它一定是素數,返回3,然後用3把序列的3的倍數篩掉 5,7,11,13,17,19,23,...