• 求一个数的算术平方根Java实现(不能使用库函数)


    求一个数的算术平方根Java实现(误差 小于0.00001)

    思路:

    二分查找 时间复杂度:logN

    注意点:

    1 做好校验,2小数处理

    代码如下:

     1
    package com.secbro.test;

    public class Sqrt {

    public static void main(String[] args) {
    for (double i = 1; i <= 100; i++) {
    Double a = binSearchSqrt(i, 1d, i);
    System.out.println(i + "的平方根是:" + a);
    }
    }
    private static double binSearchSqrt(Double num, Double left, Double right) {
    if (num == null) {
    throw new IllegalArgumentException("input invalid");
    }

    while (left < right) {
    double middle = (left + right) / 2.0;
    if (Math.abs(middle * middle - num) < 0.00001) {
    return middle;
    }
    if (middle * middle < num ) {
    left = middle;
    right = num / middle;
    } else if (middle * middle > num ) {
    right = middle;
    left = num / middle;
    }
    }
    return left;
    }
    }
     

    打印结果

    
    

    1.0的平方根是:1.0
    2.0的平方根是:1.414215087890625
    3.0的平方根是:1.7320480346679688
    4.0的平方根是:2.000001907348633
    5.0的平方根是:2.2360687255859375
    6.0的平方根是:2.4494895935058594
    7.0的平方根是:2.645751953125
    8.0的平方根是:2.8284263610839844
    9.0的平方根是:3.0
    10.0的平方根是:3.1622767448425293
    11.0的平方根是:3.3166251182556152
    12.0的平方根是:3.464102029800415
    13.0的平方根是:3.605550765991211
    14.0的平方根是:3.7416574954986572
    15.0的平方根是:3.872982978820801
    16.0的平方根是:4.000000715255737
    17.0的平方根是:4.123106002807617
    18.0的平方根是:4.2426406145095825
    19.0的平方根是:4.358898162841797
    20.0的平方根是:4.472136497497559
    21.0的平方根是:4.58257532119751
    22.0的平方根是:4.690414905548096
    23.0的平方根是:4.795831680297852
    24.0的平方根是:4.898979663848877
    25.0的平方根是:4.999999046325684
    26.0的平方根是:5.09902036190033
    27.0的平方根是:5.196152567863464
    28.0的平方根是:5.291502773761749
    29.0的平方根是:5.385165452957153
    30.0的平方根是:5.477226376533508
    31.0的平方根是:5.567764401435852
    32.0的平方根是:5.6568543910980225
    33.0的平方根是:5.744562149047852
    34.0的平方根是:5.8309513330459595
    35.0的平方根是:5.916079938411713
    36.0的平方根是:5.999999701976776
    37.0的平方根是:6.0827624797821045
    38.0的平方根是:6.16441410779953
    39.0的平方根是:6.2449981570243835
    40.0的平方根是:6.324555397033691
    41.0的平方根是:6.403124094009399
    42.0的平方根是:6.480740129947662
    43.0的平方根是:6.5574381947517395
    44.0的平方根是:6.633249133825302
    45.0的平方根是:6.708203315734863
    46.0的平方根是:6.782330334186554
    47.0的平方根是:6.855654418468475
    48.0的平方根是:6.928203135728836
    49.0的平方根是:7.0
    50.0的平方根是:7.071067690849304
    51.0的平方根是:7.141428649425507
    52.0的平方根是:7.21110263466835
    53.0的平方根是:7.280110120773315
    54.0的平方根是:7.3484697341918945
    55.0的平方根是:7.416198551654816
    56.0的平方根是:7.483314856886864
    57.0的平方根是:7.549834489822388
    58.0的平方根是:7.615772694349289
    59.0的平方根是:7.681146144866943
    60.0的平方根是:7.745967239141464
    61.0的平方根是:7.810250282287598
    62.0的平方根是:7.874008297920227
    63.0的平方根是:7.937254101037979
    64.0的平方根是:7.999999582767487
    65.0的平方根是:8.062257766723633
    66.0的平方根是:8.124038264155388
    67.0的平方根是:8.185353100299835
    68.0的平方根是:8.246211096644402
    69.0的平方根是:8.306623876094818
    70.0的平方根是:8.366600066423416
    71.0的平方根是:8.426149398088455
    72.0的平方根是:8.485280811786652
    73.0的平方根是:8.54400360584259
    74.0的平方根是:8.602325409650803
    75.0的平方根是:8.660254389047623
    76.0的平方根是:8.71779827773571
    77.0的平方根是:8.774964451789856
    78.0的平方根是:8.8317611515522
    79.0的平方根是:8.888194143772125
    80.0的平方根是:8.944271355867386
    81.0的平方根是:8.999999523162842
    82.0的平方根是:9.055385395884514
    83.0的平方根是:9.110433369874954
    84.0的平方根是:9.165151596069336
    85.0的平方根是:9.219544768333435
    86.0的平方根是:9.273618407547474
    87.0的平方根是:9.32737897336483
    88.0的平方根是:9.38083203136921
    89.0的平方根是:9.433980941772461
    90.0的平方根是:9.48683275282383
    91.0的平方根是:9.53939175605774
    92.0的平方根是:9.591662764549255
    93.0的平方根是:9.643651187419891
    94.0的平方根是:9.695359639823437
    95.0的平方根是:9.746794134378433
    96.0的平方根是:9.797958642244339
    97.0的平方根是:9.848857879638672
    98.0的平方根是:9.899495214223862
    99.0的平方根是:9.949874818325043
    100.0的平方根是:10.000000268220901

    
    

    Process finished with exit code 0

     
    
  • 相关阅读:
    软件架构学习小结
    Azure编程笔记(1):序列化复杂类型的TableEntity字段
    目标检測的图像特征提取之(一)HOG特征
    Gmail POP3设置
    MP3的频率、比特率、码率与音质的关系
    Oracle Dataguard 介绍
    【Github教程】史上最全github用法:github入门到精通
    Xcode6在10.9.4上面crash解决
    OpenCV 编程简单介绍(矩阵/图像/视频的基本读写操作)
    调用ShellExecute所须要头文件
  • 原文地址:https://www.cnblogs.com/wanghongsen/p/9236071.html
Copyright © 2020-2023  润新知