#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("\n");
free(a);
return 0;
}
埃拉托色尼筛算法查找素数(动态内存实现)
最新推荐文章于 2019-06-11 13:14:48 发布