公式如下:
由于是初学 ,编了段代码如下:
#define long int x -640320,y 545140134,z 13591409
long int f6(long int n)/*计算6n的阶乘*/
{long int s;
if(n==1)
s=6*5*4*3*2;
else s=6*n*(6*n-1)*(6*n-2)*(6*n-3)*(6*n-4)*(6*n-5)*f6(n-1);
return s;
}
long int f_3(long int n)/*计算n阶乘的3次方*/
{long int S;
if(n==1)
s=1;
else s=n*n*n*f_3(n-1);
return s;
}
long int f3(long int n)/*计算3n的阶乘*/
{long int s;
if(n==1)
s=3*2;
else s=3*n*(3*n-1)*(3*n-2)*f3(n-1);
return s;
}
long int v3(long int n)/*计算-640320的3n次方*/
{long int s=x,i;
for (i=1;i<3n;i++)
s=x*s;
return s;
}
long int fx(long int n)/*计算(545140134n+13591409)*/
{long int s;
s=y*n+z;
return s;
}
long float Fn(long int n)/*计算分母的值*/
{long int i;
long float s,sum=0;
for(i=1;i<=n;i++)
{s=(f6(i)*fx(i))/(v3(i)*f3(i)*f_3(i));
sum=sum+s;}
return sum;
}
#include <math.h>
viod main()
{long int n;
long float pi;
printf(“input n:\n”);
scanf(“%ld”,&n);
pi=(426880*sqrt(10005))/Fn(n);
printf(“pi=%ld\n”,pi);
}
有两个问题:
第一 编译出错?我检查又找不出错误的地方。
第二 数据太大,我应该用什么类型的标识符记录数据?
跪请高手指点迷津, 不甚感激!
>> 本文固定链接: http://www.vcgood.com/archives/3037
搞这么复杂干啥,2*arcsin(90)就出来了