請各位朋友幫我測試一段c語言求素數代碼的運行速度 -开发者知识库

請各位朋友幫我測試一段c語言求素數代碼的運行速度 -开发者知识库,第1张

我寫了一段求素數的代碼,已經盡我的能力給代碼做了最達優化,但是運行速度我還是不滿意,也許是我CPU不給力.所以我想了解一下這代碼在不同的CPU下會有怎樣的表現.如果各位有空,幫忙測試個運行時間吧,然后把結果和你的電腦的CPU與內存一起發上來,我統計一下.


#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main ()
{
int shuru,sq,*list,i,j,len;
clock_t start,end;
time_t s1,s2;
scanf("%d",&shuru);
if(shuru<=0) {puts("shuru error!");exit(1);}
list=(int*)calloc(shuru 1,sizeof(4));
if(list==NULL) {puts("list creat error!");exit(1);}
sq=sqrt(shuru);
len=shuru;
s1=time(NULL);
printf("程序開始時間=%lds",s1);
start=clock();
for(i=2;i<sq;i )
{
if(list[i]==1) continue;
for(j=i i;j<shuru;j =i) *(list j)=1;
}
i=1;
while(i<shuru) 
{
if(*(list i)!=0) len--;
i ;
}
s2=time(NULL);
printf("\n程序結束時間=%lds",s2);
printf("\n程序實際運行時間=%ld seconds!",s2-s1);
end=clock();
printf("\nCPU時間測量=%d ms",(end-start));
printf("\n%d以內共有質數%d個!\n",shuru,len-2);
free(list);
system("pause");
return 0;
}


我的機子是AMD Athlon(tm) 64 x2 dualcore processor 4200  2.2GHz,3G內存.
計算4億以內有多少個素數的運行結果如下:
400000000
程序開始時間=1292901066s
程序結束時間=1292901105s
程序實際運行時間=39 seconds!
CPU時間測量=39469 ms
400000000以內共有質數21336326個!
請按任意鍵繼續. . .

9 个解决方案

#1


400000000
程序開始時間=1292902980s
程序結束時間=1292903018s
程序實際運行時間=38 seconds!
CPU時間測量=27027 ms
400000000以內共有質數21336326個!
請按任意鍵繼續. . .
Press any key to continue

AMD 7750 2.72GHz,2G內存.

最佳答案:

本文经用户投稿或网站收集转载,如有侵权请联系本站。

发表评论

0条回复