Shu-How Zの小窝

Loading...

69. x 的平方根

69. x 的平方根

开平方根的方法主要有以下几种

  1. 分母有理化法:这种方法适用于处理无理数的平方根。具体步骤包括:

    • a=ba = \sqrt{b},其中 aabb 均为非负实数。
    • aa 进行分母有理化:a=b1b+1a = \frac{b-1}{b+1}
    • 解方程 ax2+bx+c=0ax^2 + bx + c = 0,求解得到 x1x_1x2x_2 分别为 aabb 的平方根。‌
  2. 牛顿迭代法:这是一种通过迭代逼近求解平方根的方法。步骤如下:

    • aa 为要求平方根的数,初始值 x1±ax_1 \approx \pm \sqrt{a}
    • 根据迭代公式 xn+1=xn+axnx_{n+1} = x_n + \frac{a}{x_n},不断迭代直到满足一定的收敛条件。
    • xn+1xn<ϵ|x_{n+1} - x_n| < \epsilonϵ\epsilon 为一个足够小的正数)时,认为找到了一个足够精确的平方根。
  3. 二分法:通过不断缩小搜索范围来逼近平方根。步骤如下:

    • aa 为要求平方根的数,取区间 [0,a][0, \sqrt{a}] 作为搜索范围。
    • 取区间中点 x=a+02x = \frac{\sqrt{a} + 0}{2},计算 f(x)=axx2f(x) = \frac{a}{x} - x^2
    • 根据 f(x)f(x) 的正负性调整搜索范围,重复执行步骤,直到找到精确的平方根或达到预设的精度要求。
  4. 笔算开平方法:适用于求任何正数的算术平方根。步骤包括:

    • 将被开方数的整数部分从个位起向左每隔两位划为一段,用撇号分开。
    • 根据左边第一段中的数,求得平方根的最高位上的数。
    • 从第一段的数中减去最高位上数的平方,形成第一个余数。
    • 用求得的最高位数乘以2试除第一个余数,得到的最大整数作为试商。
    • 用同样的方法继续求平方根的其他各位上的数。‌1

平方根的定义和性质:平方根表示为 ±a\pm \sqrt{a},其中非负数的平方根被称为算术平方根,表示为 a\sqrt{a}。正数的平方根有两个值,互为相反数,负数没有平方根,0的平方根是0。‌2

/**
 * @param {number} x
 * @return {number}
 */
var mySqrt = function(x) {
    if (x < 0) {
        return -1;
    }
    if (x === 0 || x === 1) return x;
    let left = 0, right = x;
    while (left <= right) {
        let mid = Math.floor((left + right) / 2);
        if (mid * mid <= x && (mid + 1) * (mid + 1) > x) {
            return mid;
        } else if (mid * mid < x) {
            left = mid + 1;
        } else {
            right = mid - 1;
        }
    }
    // 出现意外行为时回退返回
    return left;
};

console.log(mySqrt(5));  // 输出应该是2

J

posted @ 2025-01-15 20:27  KooTeam  阅读(31)  评论(0)    收藏  举报