埃拉託色尼篩選法求素數

2021-07-10 14:30:33 字數 1140 閱讀 9068

演算法的思想很簡單,找一張表,先把1劃掉,然後在把2的倍數劃掉,接著找下乙個沒有被劃掉的數,是3,接著把3的倍數劃掉,接著找下乙個沒有被劃掉的數,是5,接著把5的倍數劃掉,接著找下乙個沒有被劃掉的數,依次類推,劃掉的數不是素數,沒有劃掉的數是素數

#include #include #include #include #include #include #include #include #include #include #include const int inf = 0x3f3f3f3f;//1061109567

typedef long long ll;

#define lson l,m,rt<<1

#define rson m+1,r,rt<<1|1

using namespace std;

int prime[1000];

int isprime[10000];

int k=0;

void doprime(int n)}}

}int main()

else

}return 0;

}

上面這個模板不僅能判斷1000以內的乙個數是否是素數,prime陣列裡存的是1000以內的所有素數

如果只要求1000內的某個數是否是素數,下面這個就比較省時間了

#include #include #include #include #include #include #include #include #include #include #include const int inf = 0x3f3f3f3f;//1061109567

typedef long long ll;

#define lson l,m,rt<<1

#define rson m+1,r,rt<<1|1

using namespace std;

int isprime[10000];

void doprime(int n)}}

}int main()

else

}return 0;

}

埃拉託色尼篩選法

埃拉託色尼篩選法 the sieve of eratosthenes 簡稱埃氏篩法,是古希臘數學家埃拉託色尼 eratosthenes 提出的一種篩選法。是針對自然數列中的自然數而實施的,用於求一定範圍內的質數。埃氏篩法步驟編輯 1 先把1刪除 現今數學界1既不是質數也不是合數 2 讀取佇列中當前最...

埃拉託色尼篩選法 演算法

埃拉託色尼篩選法 埃拉託色尼選篩法 the sieve of eratosthenes 簡稱埃氏篩法,是古希臘數學家埃拉託色尼 eratosthenes 274b.c.194b.c.提出的一種篩選法。是針對自然數列中的自然數而實施的,用於求一定範圍內的質數,它的容斥原理之完備性條件是p h 1 先把...

埃拉託色尼質數篩選法

以前夏季學期的時候接觸過埃氏篩選法,不過自己當時不太理解。今天看的時候有點感覺,大概用到的是每個合數都能寫成幾個質數相乘的格式,因此如果不能被比該數小的質數整除的話,該書一定也是質數。並且我們已知2是最小的質數,所以從2開始篩選。以下程式可以輸出不超過n的所有質數。當然鑑於陣列的大小是有限的,因此n...