先實現高效的素數篩選法
然後再暴力的無平方數篩選法
然後再高效的平方數篩選法
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...