用割圆术求pi的值 用C程序实现

来源:百度知道 编辑:UC知道 时间:2024/05/18 06:45:56
分别用六边形,十二边形,二十四边形~ 的周长代替圆周长

单位圆,内接 6 边形
弦长 y(1) = 1, 周长 d(1) = 2^0*6*y,
pi 的近似值 p(1) = d/2 = 3*2^0*y = 3y(1) = 3

同时,利用勾股定理计算 12 边形弦长 y(2),
y2*y2 = 2 - sqrt(4-y1*y1) = 2-sqrt(3)
p(2)=3*2^1*y(2)=6y(2)

同样地,24 边弦长 y3,
y3*y3 = 2 - sqrt(4-y2*y2)
p(3)=3*2^2*y(3)=12y(3)
...

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

int splitcircle ( int n )
{
int i;
double k, y2;

for ( i = 0, k = 3.0, y2 = 1.0; i < n; ++ i, k *= 2.0 )
{
printf ( "sides = %d, pi(%d) = %.24f\n",
3*(1<<i), i, k * sqrt(y2) );
y2 = 2 - sqrt ( 4 - y2 );
}

return i;
}

int main ()
{
return splitcircle ( 12 );
}

double(int b,double c)
//b 正多边形边数,c直径
{
return (b*2*c*sin(360/b/2))
}