首页 > 解决方案 > 从 c 中的无限级数计算 的值

问题描述

我正在尝试制作一个 C 程序来计算Pi无限级数(又名莱布尼茨级数)的值,并将其显示给用户。我的问题是,我需要显示一个特殊的消息,当程序点击第一个3.14和第一个时出现3.1413.14该特殊消息应包括数字变为和的循环迭代3.141。我并不懒惰,所以找到了一种制作无限系列的方法,但第二部分我想不通,那么我应该在我的代码中添加什么以使其显示特殊消息?

#include <stdio.h>

int main(void) {
    int i, den; // denominator and counter
    double pi = 4;

    for (i = 0; i < 10000; i++) {
        den = i * 2 + 3;
        // (4 - 4/3 + 4/5 -4/7 + 4/9 -......)
        if (i % 2 == 0) {
            pi = pi - (4.0 / den);
        }
        else {
            pi = pi + (4.0 / den);
        }

        printf("pi = %lf\n", pi);
    }
}

     

标签: c

解决方案


这是一个可能的解决方案:

#include<stdio.h>
#include <math.h>

int
main (void)
{
  int i, den;                   //denominator and counter
  int prec = 0;
  double pi = 4;

  for (i = 0; i < 10000; i++)
    {
      den = i * 2 + 3;
      //(4 - 4/3 + 4/5 -4/7 + 4/9 -......)
      if (i % 2 == 0)
        pi -= 4.0 / den;
      else
        pi += 4.0 / den;

      //printf ("pi = %lf\n", pi);

      if (prec < 1 && trunc (100 * pi) == 314)
        {
          printf ("Found 3.14 at iteration %d\n", i);
          prec++;
        }
      if (prec < 2 && (int)trunc (1000 * pi) == 3141)
        {
          printf ("Found 3.141 at iteration %d\n", i);
          prec++;
        }
    }
}

输出是:

pi = 2.666667
pi = 3.466667
pi = 2.895238
...
pi = 3.150140
pi = 3.133118
pi = 3.149996
Found 3.14 at iteration 117
...
pi = 3.141000
pi = 3.142185
pi = 3.141000
Found 3.141 at iteration 1686
...

推荐阅读