e=2.71828182845904523536028747135......
高精度计算e非常简单,下面是e的高精度计算程序(为追求代码精简,程序效率并非最好)。
程序一
采用公式
C代码:
#include<stdio.h>
long a,b,i,j,k,N=10005,e[10005],c[10005];
int main(void)
{ /*计算10000位e(含整数2)*/
for(*c=1;++i,k<N;c[k]?0:++k)
for(b=0,j=k-1;++j<N;b=a%i)e[j]+=(c[j]=(a=b*10+c[j])/i);
for(;--j;e[j]%=10)e[j-1]+=e[j]/10;
for(printf("2.");++j<N-5;)printf("%ld",e[j]);
return 0;
}
程序二
采用公式
C代码:
#include <stdio.h>
int main(void)
{ /*计算e小数点后10000位*/
int N=10008,i=1,b=1,a[10009];
while(++i<N)a[a[i]=1]=2;
for(;(i=--N)>7;printf("%d",b))
for(;--i;b=10*a[i-1]+b/i)a[i]=b%i;
return 0;
}