平方根函数如何实现?
使用Binary Search和C ++的简单实现
因此,如果没有关于是否使用内置的ceil或round函数的规范,这是Java中使用Newton-Raphson方法查找无符号数的平方根的递归方法。
我也正在制作sqrt函数,100000000次迭代需要14秒,与sqrt的1秒相比还是没有什么
遵循我在Golang中的解决方案。
在Intel硬件上,通常是在硬件SQRT指令之上实现的。一些库仅使用直接得到的结果,一些库可能将其经过几轮牛顿优化以使其在极端情况下更加准确。
FDLIBM(可自由分发的LIBM)有一个很好的sqrt文档版本。 e_sqrt.c。
这是牛顿算法的实现,请参见https://tour.golang.org/flowcontrol/8。
sqrt();幕后功能。
Python的实现:
要计算平方根(不使用内置的math.sqrt函数):
long long int floorSqrt(long long int x)
{
long long r = 0;
while((long)(1<<r)*(long)(1<<r) <= x){
r++;
}
r--;
long long b = r -1;
long long ans = 1 << r;
while(b >= 0){
if(((long)(ans|1<<b)*(long)(ans|1<<b))<=x){
ans |= (1<<b);
}
b--;
}
return ans;
}
有些东西叫做巴比伦方法。