祖冲之算法

祖冲之算法

1.题目描述

π 3.1415926~3.1415927之间
4/1-4/3+4/5-4/7+4/9-4/11+4/13..........
通过关系,来计算 运算多少次之后,才会得到3.1415926~3.1415927之间

2.代码

public class Main2 {

    public static void main(String[] args) {
        double ltargetPi=3.1415926;
        double rtargetPi=3.1415927;

        int iteration=calculatePi(ltargetPi,rtargetPi);
        System.out.println("在"+ltargetPi+'-'+rtargetPi+"范围内,进行了"+iteration+"次迭代!");
    }



    //不断更新calculatePi的值以至于获取逼近的Π的值
    public static int calculatePi(double ltargetPi,double rtargetPi){
        double calculatePi=0.0;//存储Π的值。下面计算的时候会一直更新这个值,一直去逼近Π
        int sign=1;//表示正负号的
        int denominator=1;//表示分母  每次迭代会+2
        int iteration=0;//表示迭代的次数,0表示没有进行迭代

        //每次迭代逼近目标的Π值
        //每次循环计算的是精度,大于的话就是还没到精度就会一直循环下去
        while (true){
            double term=sign*(4.0/denominator);//必须是x.0的形式不然不是double
            calculatePi+=term;//计算当前的Π值
            sign*=-1;//变换符号
            denominator+=2;//更新分母
            iteration++;//更新迭代次数
            if (ltargetPi<=calculatePi&&calculatePi<=rtargetPi){
                break;
            }
        }
        return iteration;//得到迭代次数
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_41957626/article/details/131444767