作者:吕骥源_342 | 来源:互联网 | 2022-12-11 13:47
的回答给出了计算下面的代码floor(sqrt(x))
只使用整数.是否可以使用/修改它来返回ceil(sqrt(x))
?或者,计算这种价值的首选方法是什么?
编辑:谢谢大家到目前为止我道歉,我应该让它更明确:我希望有更多的"自然"方式来做这个使用floor(sqrt(x))
,可能加一个.该floor
版本使用牛顿的方法从上面接近根,我认为可能从下面接近它或类似的做法.
例如,答案甚至提供了如何舍入到最接近的整数:只输入4*x
算法.
1> Rory Daulton..:
如果x
是精确的正方形,则平方根的天花板和地板是相等的; 否则,天花板比平方根多一个.所以你可以使用(在Python中),
result = floorsqrt(x)
if result * result != x:
result += 1
修改链接到的代码不是一个好主意,因为该代码使用Newton-Raphson方法的一些属性来计算平方根.关于该方法已经开发了很多理论,并且该代码使用了该理论.我展示的代码不像修改链接代码那样整洁,但它比更改代码更安全,也可能更快.