前言
筛选法是啥呢?
举个例子:
2是质数那么2x2,2x3,2x4…都不是质数
3是质数那么3x2,3x3,3x4,3x5…都不是质数。
依次类推----
简言之: 质数的倍数都不是质数
这就是筛选法。将不是质数的排除剩下的就是质数。
代码
#include<stdio.h>
#define N 200
int a[N]={0};//0代表是质数,初始化都为质数
int main(void)
{
int i=0;
int j=2;
int z=2;
int count=0;
for(i=2;i<=N;i++)
{
if(a[i]==0)//是质数
{
z=2;
j=0;
while(j<=N)
{
j=z*i;
a[j]=1;//1代表不是质数
z++;
}
}
}
for(i=2;i<=N;i++)
{
if(a[i]==0)
{
printf("%d ",i);
count++;
if((count%10)==0)
printf("\n");
}
}
printf("\n总共有%d个素数\n",count);
return 0;
}