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


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

    预先给定一个小于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);
        }
    
    }

  • 相关阅读:
    中国大概可用NTPserver地址
    ROOT android 原则。 基于(zergRush)
    Struts2他们拦截器实例定义—登陆权限验证
    引用与指针
    address_space 从哪里来
    C++ 可以多个函数声明
    linux下远程管理利器-tmux
    内核空间和用户空间的分界 PAGE_OFFSET
    io端口
    C中程序的内存分配
  • 原文地址:https://www.cnblogs.com/lyd447113735/p/12620969.html
Copyright © 2020-2023  润新知