高效篩選法

2022-08-29 04:27:09 字數 802 閱讀 6889

先實現高效的素數篩選法

然後再暴力的無平方數篩選法

然後再高效的平方數篩選法

bool vis[1000000 + 5

];//

首先實現最高效的素數篩選

void creat_primer_table(int

m) }

}}

以上**是最高效的素數篩選法,有幾個要點需要說一下啊,首先是基底必須是素數,這部分是靠!vis[i]實現的,然後是從i*i開始篩選

下面是暴力的無平方數的篩選

bool vis[10000000 + 5];//

先實現暴力求解的方式

bool is_no(int

x)

return

true

;}

非常的暴力而且沒有技術含量,這個函式只是用來判斷是不是無平方數,在主函式中還需要有乙個迴圈來配合

下面是高效的無平方數的篩選

bool vis[1000000 + 5];//vis[0]代表n是不是無平方數

void creat_table(int n,int

m)

else

break

; }

for(;pos <= m;pos = pos +p)

}}

主要在第二層迴圈的第乙個迴圈處,因為必須首先找到乙個平方數的倍數,才能夠開始進行篩選

其中vis陣列的含義已經寫在了**的注釋中了,在主函式中相應的輸出部分,應該多加注意

質數篩選 素數篩選法

int prime 100010 void prime for int i 1 i i 1000000 i define size 1000000 int main 元素值為0代表是素數 int prime size int pos 0 int flag for int i 2 i size i p...

素數篩選法和尤拉篩選法

素數判斷 素數篩選法 用素數篩選合數 include include define max n 100 素數篩選法 int prime max n 5 初始化為0 void init int main printf n return0 求2 n內每個數的最小素因子 include include d...

素數篩選法

篩選素數法 搞acm的都知道,素數是數論中必不可少的知識,也是必須要掌握的,關於素數的篩選有好幾種方法,下面一一道來,寫的不好還請提出。第一種是最常規的做法 int main if j sqrt i cout 這種方法肯定是比第一種快的,至於快多少大家可以比較一下,注意到裡面的for迴圈是到sqrt...