求素數的三種方法

2021-06-23 02:17:30 字數 837 閱讀 7187

具體篩法是:先把n個自然數按次序排列起來。1不是質數,也不是合數,要划去。第二個數2是質數留下來,而把2後面所有能被2整除的數都劃去。2後面第乙個沒劃去的數是3,把3留下,再把3後面所有能被3整除的數都劃去。3後面第乙個沒劃去的數是5,把5留下,再把5後面所有能被5整除的數都劃去。這樣一直做下去,就會把不超過n的全部合數都篩掉,留下的就是不超過n的全部質數。因為希臘人是把數寫在塗臘的板上,每要劃去乙個數,就在上面記以小點,尋求質數的工作完畢後,這許多小點就像乙個篩子,所以就把

埃拉託斯特尼

的方法叫做「埃拉託斯特尼篩法」,簡稱「篩法」。

方法一:

const int m=1000005;  

int prime[1000005];

int flag[1000005];

int p;

int i, j;

p = 0;

memset(flag, 0, sizeof(flag) );

for ( i = 2; i < m; i++ )

}

方法二:素數的二次篩法

#define max 1000000  

bool prime[max>>1];

void isprime()

方法三:優化後的素數篩

#define max 1000000

bool prime[max];

void isprime(){

prime[0]=prime[1]=0;prime[2]=1;

for(int i=3;i

素數篩選的三種方法

第一種 剔除2 3 4 5 6 的倍數 在i從2開始的增一變化過程中,剔除i的倍數即j i j是大於等於2的自然數,j的上限是問題規模m 為了減少重複步驟,可以每當i遞增到等於第乙個沒有被剔除的 素 數時再剔除該數的倍數,重複上述過程至i到達問題規模m的平方根 1 需要說明的三個問題 假設迴圈到第n...

求Fibonacci數列的三種方法

fibonacci數列 0,1,1,2,3,5,8,13。第一招 遞推法 includeint f 47 int main 第二招 不斷變換初始 include int main if n 1 n 2 puts 1 else if n 0 puts 0 else printf d n f3 retu...

Python 三種不同方法求素數

列印101 200之間的素數 質數 滿足條件 即該數不能被除1和自己本身以外的數整除,該數 除1和自己本身以外的數 0 for else一般方法 for else for i in range 101,201 for j in range 2,i if i j 0 break else print ...