篩法求小於等於整數n的所有質數

2021-09-30 03:38:42 字數 414 閱讀 6338

篩法求n以下的質數最核心的是確定其倍數未消去的最大數p應該滿足的條件。要消去q的倍數,最小應該從q*q考察起(因為其他跟小的倍數已經由2p,3p。。。(p-1)*p消去了) 那麼消去q的倍數只需從q*q開始 到n結束(滿足不等式q*q <=n).

以下是測試**:

#include

#include

#include

#define maxsize 25

// 篩法求n以內的素數

void sieve(int a,int n)}}

for(m = 0 ; m < n  ; m++)          //列印篩選出來的質數

}printf("/n");

printf("%d/n" , s);     //輸出篩選質數個數

}void main()

質數篩選 快速篩選出小於等於N的質數

此方法非常的簡單 1.維護乙個陣列vectorprime n 1,true 既讓陣列中的所有數都為真,表明它是質數。2.對於每乙個質數,刪除它的倍數,因為質數的倍數一定是合數。讓後將陣列中對應的數改為false,這樣就可以避免遍歷他。如下 int findprime int n return res...

篩法 求n以內質數個數

判斷n是否為素數 續篩法部分 區間篩法 若乙個數可以進行因數分解,則得到的兩個數一定是有乙個 x sqrt x x 另乙個 x sqrt x x 任何乙個數都可以拆分為若干個質因數的乘積,如6 2 3,7 1 7 複雜度o nn sqrt n n include using namespace st...

篩法求2到n的所有素數

我用了三種方法 先上 public static int isprime int n for int i 2 i n i int prime newint n int pnum 0 for int i 2 i n i return prime public static int eratosthen...