# 实现sqrt算法(Implement sqrt algorithm)-其他

## 实现sqrt算法(Implement sqrt algorithm)

`````` 1 package com.company;
2
3
4 import org.junit.Test;
5
6 public class Lesson3_2 {
7
8     /**
9      * @Description: 计算大于1的正整数之平方根
10      * @param n-待求的数, deltaThreshold-误差的阈值, maxTry-二分查找的最大次数
11      * @return double-平方根的解
12      */
13     public static double getSqureRoot(int n, double deltaThreshold, int maxTry) {
14
15         if (n <= 1) {
16             return -1.0;
17         }
18
19         double min = 1.0, max = (double)n;
20         for (int i = 0; i < maxTry; i++) {
21             double middle = (min + max) / 2;
22             double square = middle * middle;
23             double delta = Math.abs((square / n) - 1);
24             if (delta <= deltaThreshold) {
25                 return middle;
26             } else {
27                 if (square > n) {
28                     max = middle;
29                 } else {
30                     min = middle;
31                 }
32             }
33         }
34
35         return -2.0;
36
37     }
38
39     @Test
40     public  void Test1()
41     {
42         int number = 10;
43         double squareRoot = Lesson3_2.getSqureRoot(number, 0.000001, 10000);
44         if (squareRoot == -1.0) {
45             System.out.println("请输入大于1的整数");
46         } else if (squareRoot == -2.0) {
47             System.out.println("未能找到解");
48         } else {
49             System.out.println(String.format("%d的平方根是%f", number, squareRoot));
50         }
51     }
52 }``````
————————
`````` 1 package com.company;
2
3
4 import org.junit.Test;
5
6 public class Lesson3_2 {
7
8     /**
9      * @Description: 计算大于1的正整数之平方根
10      * @param n-待求的数, deltaThreshold-误差的阈值, maxTry-二分查找的最大次数
11      * @return double-平方根的解
12      */
13     public static double getSqureRoot(int n, double deltaThreshold, int maxTry) {
14
15         if (n <= 1) {
16             return -1.0;
17         }
18
19         double min = 1.0, max = (double)n;
20         for (int i = 0; i < maxTry; i++) {
21             double middle = (min + max) / 2;
22             double square = middle * middle;
23             double delta = Math.abs((square / n) - 1);
24             if (delta <= deltaThreshold) {
25                 return middle;
26             } else {
27                 if (square > n) {
28                     max = middle;
29                 } else {
30                     min = middle;
31                 }
32             }
33         }
34
35         return -2.0;
36
37     }
38
39     @Test
40     public  void Test1()
41     {
42         int number = 10;
43         double squareRoot = Lesson3_2.getSqureRoot(number, 0.000001, 10000);
44         if (squareRoot == -1.0) {
45             System.out.println("请输入大于1的整数");
46         } else if (squareRoot == -2.0) {
47             System.out.println("未能找到解");
48         } else {
49             System.out.println(String.format("%d的平方根是%f", number, squareRoot));
50         }
51     }
52 }``````