找到数字的平方根的算法?

时间:2009-03-26 10:59:02

标签: algorithm language-agnostic

我知道这个问题的唯一算法是牛顿方法(猜测,然后改进它,直到它足够好)。

任何其他想法(使用您喜欢的任何语言)?

PS:当然我没有任何用例,我只是出于学术原因进行研究。

3 个答案:

答案 0 :(得分:10)

始终存在John Carmack method,这是牛顿方法的高效变体。

答案 1 :(得分:5)

可以找到几个here

答案 2 :(得分:0)

您可能需要检查Methods of computing square roots中的算法。

这是Newton's方法的快速C Log base 2实现:

double sqrt(const double x)  
{
  union
  {
    int i;
    double x;
  } u;

  u.x = x;
  u.i = (1<<29) + (u.i >> 1) - (1<<22); 
  return u.x;
}