#include<stdio.h>
#include<stdlib.h>
#include<time.h>
double m,n;
int main()
{
FILE * fp;
int x;
int i,j,k;
int *a=NULL,*p=NULL;
j=2;
m=0;
printf("请输入要求最大的数内的素数:");
scanf("%d",&x);
m=clock();
p=(int *)malloc((x+1)*4);
//申请动态数组
for(i=2;i<=x;i++)
//录入2到x之间的值,包括x和2的边界值
p[i-2]=i;
a=p;
for(;p[j-2]<=x;j++)
//排去从素数的倍数,并将该倍数赋值为该素数
for(i=j;i<=x;i++)
if(a[i-2]!=p[j-2])
if((a[i-2]!=0)&&(p[j-2]!=0))
if(a[i-2]%p[j-2]==0)
a[i-2]=0;
n=clock();
printf("输出的素数是:\n");
//输出数组中非零的数
for(i=2,j=1;i<=x;i++)
if(a[i-2]!=0)
{
printf("%d\t",a[i-2]);
p[j-1]=a[i-2];
if(j%8==0)
printf("\n");
j++;
}
if((fp=fopen("F:\\prime.txt","w+"))==NULL) //写入文本
exit(0);
for(k=0;k<j-1;k++)
fprintf(fp,"%d\t",p[k]);
printf("\n");
printf("保存成功!\n");
//提示保存文件成功
fclose(fp);
//关闭文件
free(p);
printf("计算所需时间:");
printf("%.6lf\n",(n-m)/1000);
scanf("%d",&j);
return 0;
}
自己找一下这个算法吧!!!