21xrx.com
2024-12-27 20:27:08 Friday
登录
文章检索 我的文章 写文章
C++算法:求平方根
2023-07-02 08:31:50 深夜i     --     --
C++ 算法 平方根

在C++中,求平方根是一种基本的数学操作。平方根指的是一个数的平方的根,例如4的平方根为2,因为2²=4。

实现求平方根的算法有多种,其中比较常用的有牛顿迭代法和二分查找法。这里我们就来简单介绍一下这两种算法。

1. 牛顿迭代法求平方根

牛顿迭代法是一种通过不断迭代逼近某个值的算法。具体来说,对于求 a 的平方根,我们可以先猜一个初始值 x0,然后通过以下公式不断迭代计算,直到收敛为止:

x1 = (x0 + a / x0) / 2

x2 = (x1 + a / x1) / 2

x3 = (x2 + a / x2) / 2

...

最终的 x 就是所求的平方根。

下面是使用牛顿迭代法求平方根的 C++ 代码:

float sqrt_newton(float a) {

  float x0 = a;

  float x1 = (x0 + a / x0) / 2;

  while (abs(x1 - x0) > 1e-6) {

    x0 = x1;

    x1 = (x0 + a / x0) / 2;

  }

  return x1;

}

2. 二分查找法求平方根

二分查找法是一种通过不断缩小查找范围来逼近某个值的算法。对于求 a 的平方根,我们可以从 0 到 a 进行二分查找,直到找到一个最接近 a 的值 x,使得 x² <= a,这时 x 就是所求的平方根。

下面是使用二分查找法求平方根的 C++ 代码:

float sqrt_binary(float a) {

  if (a == 0) return 0;

  float left = 0, right = a, mid;

  while (left <= right) {

    mid = (left + right) / 2;

    if (mid * mid <= a && a < (mid + 1) * (mid + 1))

      return mid;

     else if (mid * mid < a) {

      left = mid + 1;

    } else

      right = mid - 1;

  }

}

总的来说,牛顿迭代法和二分查找法都是比较高效的求平方根的算法,根据具体情况选择合适的算法可以提高程序的执行效率。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复