基於c語言的拉馬努金法計算圓周率近似值
阿新 • • 發佈:2021-01-06
基於c語言的拉馬努金法計算圓周率近似值
拉馬努金法計算圓周率近似值:
“數學家拉馬努金(Srinivasa Ramanujan)找到了一個無限序列,可以用來生成π的數值近似值:
1、c語言中的帶根號的表示:
採用庫函式sqrt()進行處理,sqrt(2)就是根號2的表示;
2、c語言中的冪指數表示:
採用庫函式pow(a,b); pow(396,4*k)就是396的4k次冪的表示;
3、庫函式標頭檔案:#include <math.h>
#include<stdio.h> #include <math.h> //階乘函式 ,遞迴求階乘 int fun(double n) { double result; if(n<=1) { result = 1; } else{ result = n*fun(n-1); } return result; //保證函式只有一個出口 } //主函式 void main() { double sum=0,k=0,cs,fz,fm,t; cs = (2*sqrt(2))/9801; while(1) { fz = (26390*k + 1103)*fun(4*k); //求和項分子 fm = (pow(396,4*k))*(pow(fun(k),4)) ; //求和項分母 t = cs*fz/fm; sum += t; if(t<1e-15) break; //最後一項小於10^(-15)時跳出迴圈 k+=1; } printf("pi的值為%.*f",15,1/sum); }
執行結果: