題目:給定整數n,請問n以內有多少個素數?
n<=1e6
樣例輸入1
11輸出
5樣例輸入2
1000000
輸出78498
演算法詳解
i從2開始遍歷,2肯定是素數那麼他的倍數肯定不是素數,標記下來,然後遍歷沒被標記的數。遍歷完所有就只剩下沒被標記的素數了。
參考**
#include #includeusing
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,...