首页 > 用户发贴区 > 编程问题提问区 > 求Pi值公式编程相关问题。
2009
02-19

求Pi值公式编程相关问题。

公式如下:



由于是初学 ,编了段代码如下:


#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);
     }


有两个问题:


第一 编译出错?我检查又找不出错误的地方。


第二 数据太大,我应该用什么类型的标识符记录数据?


跪请高手指点迷津, 不甚感激!


求Pi值公式编程相关问题。》有 1 条评论

  1. hqsh 说:

    搞这么复杂干啥,2*arcsin(90)就出来了

留下一个回复