C语言编程:如何计算到小数点后4位的圆周率Pi?
计算圆周率到小数点后4位,可以使用Gauss-Legendre算法。这个问题的解决方法是使用C语言编写一个程序来实现。
该程序的代码如下:
#include#include int main(void) { const double PI = acos(-1), SQRT2 = sqrt(2.0); double a = 1, b = 1/SQRT2, t = .25, p = 1; double an, piold, pi = 1, eps = 1e-6; /* use +2 decimal places */ int iteration_count = 0; do { ++iteration_count; an = .5 * (a + b); b = sqrt(a * b); t -= p * (a - an) * (a - an); a = an; p *= 2; piold = pi; pi = (a + b) * (a + b) / (4 * t); } while (fabs(pi - piold) > eps); printf("got pi=%f with rel. err=%.2e in %d iterations\n", pi, (pi - PI) / PI, iteration_count); return 0; }
运行该程序的命令如下:
$ gcc *.c -lm && ./a.out
程序的输出结果为:
got pi=3.141593 with rel. err=2.83e-16 in 3 iterations
通过使用Gauss-Legendre算法,我们成功计算出了圆周率的值到小数点后4位。