0

我正在尝试计算 Ruby 中一个非常大的数字的平方根。我遇到的问题是 Math.sqrt 函数看起来像这样

sqrt(numeric) → float

如果我给它一个非常大的数字,它会给我 FloatDomainError: Infinity。

sqrt()返回 BigNum的最佳方法是什么?这可能有一个宝石,还是我必须编写自己的函数来计算平方根?

在这种情况下,最简单的方法是什么?泰勒级数?数字的平方根总是整数。

4

1 回答 1

5

有一种简单的方法可以计算整数的平方根,得到一个整数:

  1. 要找到一个数的平方根,请将 M 和 P 设置为该数。
  2. 然后计算 (M+P/M)/2,四舍五入。
  3. 如果 M 等于或小于结果,则使用 M 作为平方根;否则,将 M 设置为结果并在步骤 2 重复此过程。

但是,这种方法对于大数字可能效率低下,因此请尝试一下。

编辑:

这是 Ruby 的实现:

def mysqrt(x)
  return 0 if x==0 
  m=x
  p=x
  loop do
    r=(m+p/m)/2
    return m if m<=r
    m=r
  end
end
于 2011-11-22T11:42:24.180 回答