码迷,mamicode.com
首页 > 其他好文 > 详细

使用二分法实现一个整数的开平方根

时间:2020-04-02 18:07:49      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:col   new   todo   ima   中间   info   pac   rate   取出   

 

 

用一个游戏来说明二分法:

预先给定一个小于100的正整数x,让你猜,猜测过程中给予大小判断的提示,问你怎样快速地猜出来?

先猜50,如果猜对了,结束;如果猜大了,往小的方向猜,再猜25;如果猜小了,往大的方向猜,再猜75;…,每猜测1次就去掉一半的数,就这样可以逐步逼近预先给定的数字。这种思想就是二分法。

 

现在用二分法来求一个数的算术平方根

package _3_5_test;

import java.util.Scanner;

import _12_26_test.ten;

/*
手动撸一个算术平方根的方法
二分法的实现
*/
public class SixtySevenTest {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        Scanner scanner = new Scanner(System.in);
        long n = scanner.nextLong();

        long result = 0;
        long a = 0;
        long temp = 0;
        long b = n;
        while (a <= b) {
            // 取出一段数字中间的数字temp
            temp = (a + b) / 2;
//            如果temp的平方等于被平方根的数,那么就是最终的平方根
            if (temp * temp == n) {
                result = n;
                break;
//                如果temp的平方大于被平方根的数,那么将数字的区间范围向左移动一半
            } else if (temp * temp > n) {
                b = temp - 1;
//                如果temp的平方大于被平方根的数,那么将数字的区间范围向右移动一半
            } else if (temp * temp < n) {
                a = temp + 1;
            }
        }
        System.out.println(result);
    }

}

 

技术图片

 

使用二分法实现一个整数的开平方根

标签:col   new   todo   ima   中间   info   pac   rate   取出   

原文地址:https://www.cnblogs.com/lyd447113735/p/12620969.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!