#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(" "); int n; for(i=2,n=0; i<=100; i++) { if(a[i]!=0) { printf("%5d",a[i]); n++; } if(n==10) { printf(" "); n = 0;//一次完成之后初始化 } } return 0; }
所谓筛选法是“埃拉托色尼筛法“,将一组数据逐个判断他们是否素数,找出一个非素数,就把它挖掉,最后剩下的就是素数
算法可表示为;
(1)挖去1;
(2)用下一个未被挖去的数p除p后面各数,把p的倍数挖掉
(3)检查p是否小于根号n的整数部分,如果是,则返回(2)继续执行,否则就结束
(4)剩下的就是素数