一般篩法求素數

2021-07-05 02:07:49 字數 948 閱讀 9865

標籤: pat

下面是乙個模板**,在pat考試中能夠流暢默寫會大大加速我們的程式設計速度,一般篩法雖然在速度上不如線性篩法,但是在pat考試中,這一點效能可以忽略不計了.另外需要特別注意的是:

pat打表解法有可能無法提交!

pat打表解法有可能無法提交!

pat打表解法有可能無法提交!

重要的事情說三遍!,一定要記住

在這樣的情況下,熟練掌握篩法就是至關重要的了.

下面是沒有優化的**,

bool prime [max];

memset(prime,true,max);

vector

v;for(int i = 2; i < max; i ++)

}}

有必要作幾點說明:

即使這樣優化仍然有需要注意的地方

就是將素數放入vector的操作的位置.因為檢查prime[i]是否為true的操作現在只進行到根號max就停止了.所以原來地方的對v的操作無法訪問所有為true的prime元素.所以在執行完篩法之後,我們需要再掃瞄一遍prime陣列,將prime為true的元素單獨放入.

bool prime [max];

memset(prime,true,max);

vector

v;int m = sqrt(double(max) + 0.5);

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

for(long i = 2 ; i < max;i ++)

一般篩法求素數 快速線性篩法求素數

素數總是乙個比較常涉及到的內容,掌握求素數的方法是一項基本功。基本原則就是題目如果只需要判斷少量數字是否為素數,直接列舉因子2 n 0.數 5 看看能否整除n。如果需要判斷的次數較多,則先用下面介紹的辦法預處理。首先先介紹一般的線性篩法求素數 void make prime num prime 0 ...

一般篩法求素數 快速線性篩法求素數

tag 素數 數論 素數總是乙個比較常涉及到的內容,掌握求素數的方法是一項基本功。基本原則就是題目如果只需要判斷少量數字是否為素數,直接列舉因子2 n 0.5 看看能否整除n。如果需要判斷的次數較多,則先用下面介紹的辦法預處理。首先先介紹一般的線性篩法求素數 void make prime num ...

一般篩法求素數 快速線性篩法求素數

素數總是乙個比較常涉及到的內容,掌握求素數的方法是一項基本功。基本原則就是題目如果只需要判斷少量數字是否為素數,直接列舉因子2 n 0.5 看看能否整除n。如果需要判斷的次數較多,則先用下面介紹的辦法預處理。首先先介紹一般的線性篩法求素數 cpp view plain copy void make ...