有几种方法只使用整数算术来查找整数平方根。例如this one。它使有趣的阅读和一个非常有趣的理论,特别是对于我这一代,这种技术不再那么有用。使用整数算术计算第N个根
最主要的是它不能使用浮点运算,因此排除了牛顿方法和它的派生。我知道找到根的唯一方法是二项式扩展,但这也需要浮点算术。
有什么技术/算法用于仅使用整数算术来计算整数n阶根?
编辑:感谢所有迄今为止的答案。他们似乎都稍微有点聪明的试验和改进。有没有更好的办法?
编辑2:好的,所以似乎没有智能的方法来做到这一点没有试验/改进和牛顿法或二分法搜索。任何人都可以在理论上提供两个的比较?我在两者之间运行了许多基准,并发现它们非常相似。
什么是您所需的输入值范围? – 2012-01-11 21:27:22
@PaulR,理想情况下它可以是可扩展的,但我认为你现在可以假设基数和数字都是32位(无符号)整数。 – Matt 2012-01-11 21:32:19
你允许哪种整数操作?平方根是一种特殊情况,因为可以使用加法,减法和移位来提取它们。 – Neil 2012-01-11 21:39:59