1. 程式人生 > 其它 >基於c語言的拉馬努金法計算圓周率近似值

基於c語言的拉馬努金法計算圓周率近似值

技術標籤:c語言演算法

基於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);
	
}

python實現參考連結

執行結果:
在這裡插入圖片描述