#include<stdio.h>
#include<math.h>
#define N 100
void SiftPrime(int a[],int n)
{
int i,j;
for(i=2;i<=N;i++)
{
a[i]=i;
}
for(i=2;i<=sqrt(N);i++)
{
for(j=i+1;j<=N;j++)
{
if(a[i]!=0 && a[j]!=0 && a[j]%a[i]==0)
{
a[j]=0;
}
}
}
}
void PrintPrime(int a[], int n)
{
int i;
for(i=2;i<=N;i++)
{
if(a[i] != 0)
{
printf("%d\t",a[i]);
}
//printf("\n");
}
}
int main()
{
int a[N+1];
SiftPrime(a,N);
PrintPrime(a,N);
return 0;
}
筛法的基本思路就是,把从1开始的、某一范围内的正整数从小到大顺序排序,1不是素数我们不考虑它,然后在剩下的数中选取最小的素数,为2时,然后去掉2的整数倍,取完之后,在选取剩下的最小素数。依次类推,直到筛子为空时结束。我们把所有是最小素数整数倍赋值为零。再使用一个函数打印输出剩余的数,这些数就是素数。