原创 圆周率算法比较

一般网上都采用格雷戈里 - 莱布尼茨无穷级数计算π。需要迭代 500000 次后可计算出 Pi 的 10 位小数。公式如下:
π = (4/1) - (4/3) + (4/5) - (4/7) + (4/9) - (4/11) + (4/13) - (4/15) …
首先用 4 减去 4 除以 3,然后加上4除以5,然后减去4除以7。反复变换使用加减法,后面的小数是用4作分子,用连续的奇数作分母。计算的次数越多,则结果越接近 Pi。
测试了一下,性价比不高,尤其是增加精度后耗时指数式增加。
我忽然想到可以用勾股定理和面积公式计算圆周率,如图所示:
在这里插入图片描述
设:x1 = x2 = x3 …… = xn = 1
则π = 4*(y1 + y2 + y3 + … + yn) / r ^ 2

于是写了一个更简单的算法:

double getPi(int step) {
   
   
	double pi, x, y, xx, s, r; //xx是x的平方的意思
	r = std::pow(10, step + 1); //10的幂次方
	double rr = r * r, yy = rr; //rr是半径的平方的意思
	for (x = 0; x < r; x += 1) {
   
   
		xx 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值