#include<stdio.h> #include<math.h> int main() { int a[101],i,j; for(i=1; i<=100; i++) { a[i] = i; //為數組賦初值 } a[1] = 0;//先去掉a[1] for(i=2; i<sqrt(100); i++) //如果需要找1-n范圍內的素數表,只須進行到除數為根號下n(取整數就可) { for(j=i+1; j<=100; j++) if( a[i]!=0 && a[j]!=0 ) if(a[j]%a[i] == 0) { a[j] = 0; } } printf("\n"); int n; for(i=2,n=0; i<=100; i++) { if(a[i]!=0) { printf("%5d",a[i]); n++; } if(n==10) { printf("\n"); n = 0;//一次完成之后初始化 } } return 0; }
所謂篩選法是“埃拉托色尼篩法“,將一組數據逐個判斷他們是否素數,找出一個非素數,就把它挖掉,最后剩下的就是素數
算法可表示為;
(1)挖去1;
(2)用下一個未被挖去的數p除p后面各數,把p的倍數挖掉
(3)檢查p是否小於根號n的整數部分,如果是,則返回(2)繼續執行,否則就結束
(4)剩下的就是素數