#include<stdio.h>
#include<stdlib.h>
#define CALLOC(P, N, S)
if(!((P)=calloc(N, S))){
printf( stderr, "Insufficient memory");
exit(EXIT_FAILURE);
}
int main(void)
{
int *a;
int N;
printf("输入素数范围:");
scanf("%d", &N);
getchar();
CALLOC(a, N, sizeof(int));
for(int i=2; i<N; i++)
a[i]=1;
//将所有元素假定为素数
for(int i=2; i<N; i++)
if(a[i]) //只考虑被假定为素数的元素
for(int j=i,k=i*j; k<N; j++,k=j*i)
a[k]=0; //将被假定素数倍数设为合数
for(int i=2; i<N; i++)
if(a[i])
printf("%4d ", i);
//打印素数
printf("
");
free(a);
return 0;
}