所谓的“筛选法”就是指“埃拉托色尼筛法”。它采取的方法是,在一张纸上写上1~1000的全部整数,然后逐个判断他们是否为素数,找出一个非素数,就把他挖掉,最后剩下的的就是素数。
(1)挖去1;
(2)用下一个未被挖去的数p出p后面各数,把p的倍数挖掉。
(3)检查p是否小于根号p的整数部分(如果n=1000,则检查p
<31是否成立),如果是,则返回(2)继续执行,否则就结束;
(4)剩下的数就是素数
#include<stdio.h>
#include<math.h>
int main() {
int i,j,n,a[101];
for(i=1; i<=100; i++) { //a[0]不用。只用a[1]~a[100]
a[i]=i; //将a[1]~a[100]的值为1~100
}
a[1]=0; //将第一个元素1挖掉,因为第一个元素是1,不是素数
for(i=1; i<=sqrt(100); i++) {
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");
for(i=2,n=0;i<=100;i++)
{
if(a[i]!=0) //选出值不为0的就是素数
{
printf("%5d",a[i]);
n++; //积累本行已输出的数据个数
}
if(n==10)
{
printf("\n"); //如果等于10就换行
n=0;
}
}
printf("\n");
return 0;
}