質數打表 (三種方法)

2021-10-03 23:23:55 字數 759 閱讀 9356

分析

所有可能的因數全部試一遍

const

int maxn=

1e6+5;

int prime[maxn]

;voidp1(

)}

分析

先把所有整數列出來,然後把2的倍數全部剔除,然後是3的倍數,4的倍數…以此類推,遍歷所有素數,把倍數全部去掉。

對於每個數字i,如果沒被去掉,它一定是質數,因為它不是任何2到i-1數字的倍數。然後就開始劃它的倍數就好。

const

int maxn=

1e6+5;

bool vis[maxn]

;//質數標記為1,非質數標記為0

int prime[maxn]

;voidp2()}}

分析

普通的質數篩法,很多數被處理了多遍。比如6,質數為2的時候處理了一遍,質數為3的時候又處理了一遍。所以在篩法的基礎上改進一下,只允許讓最小的質因數曬去,提高了效率。

const

int maxn=

1e6+5;

bool vis[maxn]=;

//質數標記為0,非質數標記為1

演算法 求質數常見的三種方法

最近新開了乙個欄目,打算記一些常見問題的演算法,以後說不定有用到可以套用一些。質數 prime number 又稱素數,有無限個。質數定義為在大於1的自然數中,除了1和它本身以外不再有其他因數。這次我們的例題是 求n以內的質數。其中 n是傳入的引數 這裡我們介紹三種常見方法 1.完全遍曆法 這種演算...

關於c語言的選擇質數三種方法

分享三個關於c語言的求質數方法,質數就是只能被1和自身整除的數 將質數標記為0,合數為1。依次遍曆法。顧名思義,這種方法是最容易想到的但也是計算量最大的,利用質數只能被1和自身整除的特性求出範圍內的質數。include intmain int c int j for c 2 c n c for c ...

三種方法 2020 11 23

利用連線類,例項化得到連線物件 連線類 連線物件 new 連線類 cmd.executescalar cmd.excutereader 關注其中一條資料 物件名.read 獲取關注列所對應的值 console.writeline 物件名 name while 物件名.read 功能,聚焦下一行資料。...