原理:一个数的整数倍一定不是素数
栗子:寻找100以内的素数
2的整数倍有:4,6,8,10,12,14........
3的整数倍有:3,6,9,12,15,18........
4的整数倍......
5的......
【我们只需要将这些整数倍的数剔除出去,剩下的一定是素数】
完美模板(可以放心食用)
#include<stdio.h>
//全局定义使数组置为0
int f1[10001];//小染习惯用f1代替flag去表示标记数组
int su[5000];//存素数的数组
int main()
{ int i,j,k=0;
for(i=2;i<=10000;i++)//寻找2~10000的素数
{
if(f1[i]==0)//如果没有被标记则可以进入
{ su[k++]=i;//没被标记说明未被剔除,说明是素数
for(j=i*2;j<=10000;j+=i)//j+=i表示一个数的整数倍
{ //关于这个for为什么放在if里 ,为了尽可能避免重复标记,降低运算量
f1[j]=1;//标记
}
}
}
}