筛选法的基本思想:利用凡是2的任意倍数的数都不是素数,那么剩下的就是素数。利用标记法,假设求MAXNUM=100个数里的所有素数,初始化时将所有数的标记位暂时赋值为1;然后将2的任意倍数的数的标记位暂时赋成0;最后输出标记位为1的数,即所求的素数。
#include<stdio.h>
#define MAXNUM 101
int main(){
int n[MAXNUM]={0};
int i,j;
for(i=1;i<MAXNUM;i++){ //必须得初始化,将每个值都赋值
n[i]=1;
}
for(i=2;i<=MAXNUM-1;i++){ //从2开始,2的任意倍数均不是素数
if(n[i]==1){
for(j=2;i*j<=MAXNUM-1;j++)
n[i*j]=0;
}
}
for(i=1;i<=MAXNUM;i++){
if(n[i]==1)
printf("%d ",i);
}
}