我正在尝试计算Ruby中一个非常大的数字的平方根。我遇到的问题是Math.sqrt函数看起来像这样
sqrt(numeric) → float
如果我喂它一个非常大的数字,它会给我FloatDomainError:Infinity。
让sqrt()
返回BigNum的最佳方法是什么?是否可能有一个宝石或我是否必须编写自己的函数来计算平方根?
在这种情况下,最简单的方法是做什么?泰勒系列?数字的平方根将始终为整数。
答案 0 :(得分:5)
有一种简单的方法可以计算整数的平方根,从而产生一个整数:
这种方法对于大数字来说效率可能不高,所以试试看看。
编辑:
这是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