打表法判斷素數(掌握)

2021-07-09 21:21:18 字數 536 閱讀 4106

打表法判斷素數

在此之前,我們判斷素數的方法多是用暴力列舉法,即若要判斷乙個數n是否是素數,就需要從i=2開始,一直到n/2為止,判斷是否有數能整除n,若沒有的話,則n為素數。 這樣判斷素數的方法有乙個致命的弱點,就是容易超時,因為每判斷一次都要從2開始乙個乙個作整除判斷,一旦要判斷的這個n稍大一點的話,這種方法就無能為力了。因此,這裡引入一種新的判斷素數的方法--打表判斷法。 

思路:先確定要判斷的數大概在哪個範圍之內,以便於開乙個合適的陣列prime,首先要將prime陣列初始化為0,i從2開始,如果對應的prime[i]為0 的話,即從j=i*i開始,到最大的範圍,將這些位置的prime的值都變為1,表示這些數都不是素數,這裡注意j在加的時候加的不是1,而是i,這樣一直下去,一張素數表就完成了,當需要判斷某個數是否是素數的時候只要判斷prime[i]的值是多少就可以了,如果是0,表示這個i是素數,如果是1,表示這個i不是素數。

下面是該函式 的**

void dabiao() 

;      

//素數表,0為素數 

intmain()  

素數篩法打表

篩法打素數表是一種高效的打表方法,具體做法是 先把n個自然數按次序排列起來。1不是質數,也不是合數,要划去。第二個數2是質數留下來,而把2後面所有能被2整除的數都劃去。2後面第乙個沒劃去的數是3,把3留下,再把3後面所有能被3整除的數都劃去。3後面第乙個沒劃去的數是5,把5留下,再把5後面所有能被5...

素數打表 篩法

打表 是一種典型的用空間換時間的做法,一般指將所有可能需要用到的結果事先計算出來,這樣以後後面需要用到時就可以直接查表獲得。在什麼情況下我們需要打表?1 在程式中一次性計算出所有需要用到的結果,之後查詢直接取這些結果。舉個例子,假如我們算fibonacci數中的f n 我們假如需要算很多次q次 比如...

篩法素數打表方法

埃拉託斯特尼篩法,是一種西元前250年由古希臘數學家埃拉託斯特尼所提出的一種簡單檢定素數的演算法。給出要篩數值的範圍n,找出以內的素數。先用2去篩,即把2留下,把2的倍數剔除掉 再用下乙個質數,也就是3篩,把3留下,把3的倍數剔除掉 接下去用下乙個質數5篩,把5留下,把5的倍數剔除掉 不斷重複下去....