【C語言】 利用篩選法求100以內的素數
阿新 • • 發佈:2018-10-31
演算法思路:
原理很簡單,就是當i是質(素)數的時候,i的所有的倍數必然是合數。如果i已經被判斷不是質數了,那麼再找到i後面的質數來把這個質數的倍數篩掉。
程式碼如下:
//C語言 篩選法求100以內的素數 //原理很簡單,就是當i是質(素)數的時候,i的所有的倍數必然是合數。如果i已經被判斷不是質數了,那麼再找到i後面的質數來把這個質 //數的倍數篩掉。 //我們將從2開始 用2除後面的數,如果後面的數能被2整除 那麼那個數一定不是素數 #define N 100 #include "stdio.h" int main(){ int i,j; int arr[N]; for(i = 0;i<N;i++){//對陣列賦值 1-100 arr[i]=i+1; } arr[0] = 0;//1不是素數,所以將下標0 的元素設定為0 //進行素數判斷:我們將從2開始 用2除後面的數,如果後面的數能被2整除 那麼那個數一定不是素數,將那個數置為零 for(i = 1;i < N-1;i++){ for(j = i+1;j < N;j++){ if(arr[i] != 0 && arr[j] != 0)//如果進行到3的時候2後面一定有數被置為0了,這裡我們需要判斷一下是不是有0 if(arr[j] % arr[i] == 0){ arr[j] = 0; } } } //迴圈輸出 for(i = 0;i<N;i++){ if(arr[i] != 0) printf("%d\n",arr[i]); } return 0; }
結果如下: