原理介绍
它就是当 时函数
值的极限。即:
同时它也等于
计算结果
编译平台: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);
}