集册 Java实例教程 查找BigInteger的平方根

查找BigInteger的平方根

欢马劈雪     最近更新时间:2020-01-02 10:19:05

552
提示:您可在线编辑运行本教程的实例 - 运行实例,去试试!
查找BigInteger的平方根


import java.math.BigDecimal;

import java.math.BigInteger;
/** 来 自 时 代 J a v a 公 众 号 - N o w J a v  a . c o m**/

public class Main {

  public static void main(String[] args) {

    String n = "";


    BigInteger my2P100000 = new BigInteger("0");

    BigInteger two = new BigInteger("2");


    my2P100000 = two.shiftLeft(2000 - 1);


    System.out.println("Value of 2^2,000 " + my2P100000);

    System.out.println("Finding the Square Root of 2^2000");


    String mys = my2P100000 + "";

    n = (mys);

    int firsttime = 0;


    BigDecimal myNumber = new BigDecimal(n);// 来 自 时代Java公众号

    BigDecimal g = new BigDecimal("1");

    BigDecimal my2 = new BigDecimal("2");

    BigDecimal epsilon = new BigDecimal("0.0000000001");


    BigDecimal nByg = myNumber.divide(g, 9, BigDecimal.ROUND_FLOOR);


    BigDecimal nBygPlusg = nByg.add(g);


    BigDecimal nBygPlusgHalf = nBygPlusg.divide(my2, 9, BigDecimal.ROUND_FLOOR);


    BigDecimal saveg = nBygPlusgHalf;

    firsttime = 99;


    do {

      g = nBygPlusgHalf;

      nByg = myNumber.divide(g, 9, BigDecimal.ROUND_FLOOR);

      nBygPlusg = nByg.add(g);

      nBygPlusgHalf = nBygPlusg.divide(my2, 9, BigDecimal.ROUND_FLOOR);

      BigDecimal savegdiff = saveg.subtract(nBygPlusgHalf);


      if (savegdiff.compareT
展开阅读全文