埃式素数筛注意点
1.整型数组用bool类型,与赋值的true想对应,引用stdbool的头文件
2.用menset 将整型数组代替循环结构来赋值,memset(a,true,sizeof(a));第二个不能是数字。
3.第二层循环从i*i开始,与质因数的原理是一致的,防止重复赋值。
#include<stdio.h>
#include"string.h"//为menset做准备
#include"stdbool.h"//为bool做准备
bool a[1000000];
int main()
{
int i=2;
int j=1;
int n;
scanf("%d",&n);
memset(a,true,sizeof(a));//注意第二个参数
for(i=2;i<n;i++)
{
if(a[i]==1)//处理是素数 的,因为一开始我就将其都视为素数,不是素数 的就不需要再重复处理了。
{
for(j=i*i;j<n;j+=i){
a[j]=0;//不是素数的置为0;
}
}
}
for(i=1;i<n;i++)
{
printf("%d %d\n",a[i],i);
}