【问题标题】:Computing pi with a series用系列计算 pi
【发布时间】:2019-05-12 07:22:41
【问题描述】:

我想使用拉比诺维茨的斯宾诺算法计算 pi。它是由两个阶乘和一个幂组成的无限和:

问题是我编写了用于计算阶乘和幂的简单程序,但我需要将它们组合在一个 for 循环中。并计算总和。

这是我首先做的:

但它不起作用。 计算 pi 背后的原始想法是否正确?用这些系列计算 pi 是否可行? 如果是,我的错误是什么? 任何帮助将不胜感激。在此先感谢

#include <stdio.h>

int main()
{
  float factorialn,n,sqr,power,factoriald,f;
  factorialn=1;
  n=10;
  power=2;
  factoriald=1;
  for(int i=1;i<=n;i++)
  {
    factorialn*=i;
  }
  sqr=factorialn*factorialn;
  for(int i=1;i<=n;i++)
  {
    power=power*2;
  }
  for(int i=1;i<=2*n+1;i++)
  {
    factoriald=factoriald*i;
  }
  printf("factorialn square is: %10f",sqr);
  printf("Pow of 2 to the n+1: %10f",power);
  printf("Factoriald: %10f",factoriald);

  return 0;
}

第二个代码:

#include <stdio.h>

int main()  
{
  unsigned long long factorialn,n,sqr,power,factoriald,f;
  double sum;
  factorialn=1;
  n=10;
  power=2;
  factoriald=1;
  for(int i=1;i<=n;i++)
  {
    factorialn*=i;
    power=power*2;
    for(int j=1;j<=2*n+1;j++)
    {
      factoriald=factoriald*j;
    }
    sum+=factorialn*factorialn*power/factoriald;

  }
  printf("summa %1.16lf\n;",sum);  
  return 0;
}

【问题讨论】:

  • 请将您的代码直接以纯文本形式发布,不要使用图片。
  • 旁白:(i!)^2 将是一个非常大的数字。
  • 提示:在factoriald的内部计算中不要在1处开始j
  • 我确实发布了纯文本@Alex。
  • @pmg j 计算应该从哪里开始?

标签: c for-loop nested-loops series pi


【解决方案1】:

21!对于 64 位 unsigned long long 来说太大了。

我将所有内容都更改为 long double,将 sum 初始化为 2,并使用 i 重新进行 factoriald 循环计算。

#include <stdio.h>

int main(void) {
    long double factorialn, n, power, factoriald;
    long double sum = 2;
    factorialn = 1;
    n = 10;
    power = 2;
    factoriald = 1;
    for (int i = 1; i <= n; i++) {
        factorialn *= i;
        power *= 2;
        for (int j = 2 * i; j <= 2 * i + 1; j++) {
            factoriald *= j;
        }
        sum += factorialn * factorialn * power / factoriald;
    }
    printf("summa %1.16Lf\n", sum);
    return 0;
}

https://ideone.com/Fb8c88

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-15
    相关资源
    最近更新 更多