ACM基礎知識儲備 快速篩法求素數

2021-09-13 03:48:15 字數 535 閱讀 5675

求素數是程式設計比賽中經常遇到的問題,最基本的方法是通過素數的定義直接判斷,只能被1和它本身整除的數就是素數了。這種方法適合判斷單個數是否為素數,當要求乙個範圍內素數而這個範圍又比較大時,這種方法就不太使用了,甚至程式要執行幾分鐘才能算出結果。

篩法的思想是去除要求範圍內所有的合數,剩下的就是素數了,而任何合數都可以表示為素數的乘積,因此如果已知乙個數為素數,則它的倍數都為合數。

普通的線性篩法:

#include"cstdio"

#include"cstring"

using namespace std;

#define max 100000//求max範圍內的素數

long long su[max],cnt;

bool isprime[max];

void prime()

for(long long j=i*2;j<=max;j+=i)//素數的倍數都為合數

}}int main()

}}int main()

基礎知識儲備 搜尋 ES

應用 github 使用 elasticsearch 對1300億行 進行查詢 愛奇藝使用es作為資料庫儲存 介紹 集群中的節點通過埠 9300 彼此通訊。如果這個埠沒有開啟,節點將無法形成乙個集群 所有其他語言可以使用 restful api 通過埠 9200 和 elasticsearch 進行...

4 Map基礎知識儲備

之前list中的陣列和鍊錶,查詢某個元素都存在乙個問題,需要遍歷所有元素,直到找到元素為止,效率比較低。而雜湊表則是不在意儲存順序,只希望快速找到元素。每個物件計算雜湊碼,根據雜湊碼儲存在對應的位置上。出現雜湊衝突的時候就往鍊錶上新增,元素衝突的多的話轉為紅黑樹。如果雜湊表太滿,需要再雜湊,建立乙個...

回溯法基礎知識

回溯法是一種選優搜尋法,按照選優條件進行深度優先搜尋 簡單來講就是遍歷 當搜尋進行到某一步時,發現原先選擇並不是最優或達不到目標,就退回一步重新選擇,這種走不通就退回再走的技術稱為回溯法,而滿足回溯條件的某個狀態點稱為 回溯點 回溯法是從初始狀態出發,按照深度優先搜尋得到方式,根據產生子節點的條件約...