【語言-彙編】自然常數(e)的計算
阿新 • • 發佈:2019-02-15
原理介紹
它就是當時函式值的極限。即:
同時它也等於計算結果
編譯平臺:Microsoft Visual Studio 2010
專案:Win32專案-空專案
CPU:Intel(R) Core(TM)I7-3770
記憶體:3.48 GB
計算位數:10萬
總用時:11秒473毫秒
計算原始碼
#include<stdio.h> #include<stdlib.h> #include<malloc.h> #include<time.h> #include <atltime.h> long a=100000L; void main() { FILE *fp; unsigned long c,d,e,i,j,ws; long *f,*bb; printf("請輸入您要計算的位數:"); scanf("%ld",&ws); if(ws<1)return; c=(ws+4)/05*05; bb=f=(long*)malloc(04*c); if(f==NULL)abort(); char filename[40]; printf("請輸入您儲存的路徑: ");//提示輸入資料檔名 scanf("%s",filename);//若打入NUL,則不存檔 fp=fopen(filename,"w"); if(fp==NULL) { fp=fopen("pi.txt","w"); if (fp==NULL) { printf("開啟檔案e.txt失敗!");//提示輸入資料檔名 } else { printf("您預設儲存的為檔名稱為e.txt!"); } } long t1=GetTickCount(); *bb++=a/5; for(i=1;i<c-1;i++) *bb++=a/10; *bb=a/10; for(e=0;c;c-=05,bb-=05,e=d%a) { static long group; d=0;i=1;j=c; _asm mov eDI,bb loopi: _asm mov eax,[eDI] _asm mul Dword ptr a _asm mov ecx,edx _asm mov ebx,eax _asm mov eax,d _asm mul dword ptr i _asm add eax,ebx _asm adc edx,ecx _asm div dword ptr j _asm mov d,eax _asm mov [eDI],edx _asm sub eDI,04 _asm dec dword ptr j _asm jnz loopi printf("%05lu\t",e+d/a); if(fp!=NULL) fprintf(fp,"%05lu",e+d/a);//寫入磁碟 } long t2=GetTickCount(); printf("%ld毫秒\n",t2-t1); free(f); if(fp!=NULL) fclose(fp); }