1、先解釋一下篩選法的步驟:<1>先將1挖掉(因為1不是素數)。<2>用2去除它後面的各個數,把能被2整除的數挖掉,即把2的倍數挖掉。<3>用3去除它後面的各數,把3的倍數挖掉。<4>分別用5…各數作為除數去除這些數以後的各數。上述操作需要一個很大的容器去裝載所有數的集合,只要滿足上述條件,即2的N次方的全部置0,3的N次方的全部置0,4的N次方的全部置0.。。。一直到這個資料集合的末尾,這樣一來不為0的數就是素數了,然後按下標在裡面進行查詢就好了2、例程:#include "stdafx.h"#include <iostream>using namespace std;#define N 1001void main(void){ int a[N],i,j,k; for(i=1;i<N;a[i++]=1); for(i=2;i<N;i++) if(a[i]) for(j=i+i;j<N;a[j]=0,j+=i); for(k=0,i=2;i<N;i++) if(a[i]) printf(++k%15 ? "%-4d" : "%-4d\n",i); printf("\n");}
1、先解釋一下篩選法的步驟:<1>先將1挖掉(因為1不是素數)。<2>用2去除它後面的各個數,把能被2整除的數挖掉,即把2的倍數挖掉。<3>用3去除它後面的各數,把3的倍數挖掉。<4>分別用5…各數作為除數去除這些數以後的各數。上述操作需要一個很大的容器去裝載所有數的集合,只要滿足上述條件,即2的N次方的全部置0,3的N次方的全部置0,4的N次方的全部置0.。。。一直到這個資料集合的末尾,這樣一來不為0的數就是素數了,然後按下標在裡面進行查詢就好了2、例程:#include "stdafx.h"#include <iostream>using namespace std;#define N 1001void main(void){ int a[N],i,j,k; for(i=1;i<N;a[i++]=1); for(i=2;i<N;i++) if(a[i]) for(j=i+i;j<N;a[j]=0,j+=i); for(k=0,i=2;i<N;i++) if(a[i]) printf(++k%15 ? "%-4d" : "%-4d\n",i); printf("\n");}