//埃拉托色尼筛选法求素数
#include <stdio.h>
#include <stdlib.h>
void EraSushu(int sushu[],int cnt)//输出1~cnt的素数
{
int i,j;
sushu[0]=0;
for (i=1; i!=cnt-1; i++) {
if(sushu[i]==0)
continue;
// 1.找第一个不为0的数,用它去判断之后所有的数
// 2.查找下一个不为0的数
for(j=i+1; j!=cnt; j++) {
if(sushu[j]%sushu[i]==0)
sushu[j]=0;
}
}
}
int main()
{
int i,n;
printf("Input n: ");
scanf("%d",&n);
int* pSushu=malloc(sizeof(int)*n);
//数组赋值
for(i=0; i!=n; ++i) {
*(pSushu+i) = i+1;
}
EraSushu(pSushu,n);
//输出数组
for(i=0; i!=n; ++i) {
if (*(pSushu+i))
printf("%d\t",*(pSushu+i));
}
free(pSushu);
return 0;
}