|
|
沙发

楼主 |
发表于 2008-7-29 00:19:55
|
只看该作者
Re: 列出10000以内的素数???
Do you have to do it in SAS? I got this C code from internet, but I just don't have time to recode it in SAS. Try if you can code it in SAS under this idea. Good luck.
[code:6z79nodi]#include<stdio.h>
#include<time.h>
#define MAX 100000010
int n,p[MAX],tot=0;
double s,t;
FILE *fp;
void prime()
{ int i,j,t=sqrt(n)+1;
for(i=2;i<t;i++)
if(p[i])
{ fprintf(fp,"%d\n",i);
tot++;
j=i+i;
while(j<n)
{ p[j]=0;
j+=i;
}
}
for(i=t+1;i<n;i++)
if(p[i])
{ tot++;
fprintf(fp,"%d\n",i);
}
}
main()
{ int i;
fp=fopen("prime.txt","w");
scanf("%d",&n);
s=clock();
for(i=0;i<n;i++)
p[i]=1;
prime();
t=clock();
fprintf(fp,"Num = %d\nTime = %.0lf ms\n",tot,t-s);
fclose(fp);
}
本机测试结果:10000000用时1156ms(1.156秒)
100000000用时80秒(较慢,主要是内存太少,反复读硬盘的原因)
[/code:6z79nodi] |
|