c语言求平方根

Python013

c语言求平方根,第1张

平方直接两个数相乘即可。

平方根可以通过这个数本身和0之间进行折半查找的方法,对数据进行计算。

当两数相乘大于这个数时,重置最大值;小于这个数时,重置最小值。由于存在除不尽的数,可以加上一个精度进行判断。

#include<stdio.h>

#include<math.h>

double squareFun(double x) // 平方

{

    return x*x

}

double sqrtFun(double x, int precision) // 开方

{

    double a = 0, b = x, mid = x/2, val = pow(10, -precision)

    if (x < 0)

        return -1

    while (true)  // 循环折半查找

    {

        if (fabs(mid*mid-x) <= val) // 达到进度则退出

            break

        if (mid*mid > x)  

            b = mid  // 重置最大值

        else

            a = mid  // 重置最小值

        mid = (a+b)/2

    }

    return mid

}

int main()

{

    double d = sqrtFun(2, 15)

    printf("%.15lf\n", d)

    printf("%.15lf\n", squareFun(d))

}

平方直接两个数相乘即可。

平方根可以通过这个数本身和0之间进行折半查找的方法,对数据进行计算。

当两数相乘大于这个数时,重置最大值;小于这个数时,重置最小值。由于存在除不尽的数,可以加上一个精度进行判断。

#include<stdio.h>

#include<math.h>

double squareFun(double x) // 平方

{

    return x*x

}

double sqrtFun(double x, int precision) // 开方

{

    double a = 0, b = x, mid = x/2, val = pow(10, -precision)

    if (x < 0)

        return -1

    while (true)  // 循环折半查找

    {

        if (fabs(mid*mid-x) <= val) // 达到进度则退出

            break

        if (mid*mid > x)  

            b = mid  // 重置最大值

        else

            a = mid  // 重置最小值

        mid = (a+b)/2

    }

    return mid

}

int main()

{

    double d = sqrtFun(2, 15)

    printf("%.15lf\n", d)

    printf("%.15lf\n", squareFun(d))

}