计算圆周率有很多方法,以下这一种是作者偶然想出的一种方法
#include<stdio.h>
#include<conio.h>
#include<math.h>
double cnt=3.0;
double lenght=1.0;
int main()
{
while(true)
{
printf("%.16lf\n",lenght*cnt);
double tlen=lenght/2.0;
double thigh=1.0-sqrt(1.0-tlen*tlen);
lenght=sqrt(tlen*tlen+thigh*thigh);
cnt*=2.0;
getch();
}
return 0;
}
首先我们先用一个特殊三角形——等边三角形放入圆中,三角形的边长与圆的半径都为1
假如将圆看成多个等边三角形组合而成的多边形,那么圆的周长=6*1=6,圆周率=6/2=3
现在,我们再作一条半径把等边三角形分成2分,则两个直角三角形的斜边长1,短边长0.5
利用沟谷定理算出三角形高为sqrt(1*1-0.5*0.5)=0.866,用圆的半径减去三角形的高就为超出部分线段的长度0.233
在利用沟谷定理算出等腰三角形底边长sqrt(0.5*0.5+0.233*0.233)=0.518
再将圆看成多个等腰三角形组合而成的多边形,则周长=0.518*12=6.216,圆周率=6.216/2=3.108
再此基础上,不断平分,就可以得到精确的值