在C/C++中:
我需要找出一些大数字是否是完美平方,但是我的代码发现像851659987045856130这样的数字是有效的,当922854261.000000487617621781778是实际的平方根(精度更高)而不是整数时。有没有办法延迟舍入以获得更高的精度?我知道上面的数字甚至没有“完美平方最后一位”,但我想知道一般情况下,是否有可能检查这么大的数字是否实际上是一个合理但比标准精度更高的完美平方。
发布于 2016-07-15 07:03:09
这里要做的最好的事情是使用精确的平方根算法。如果这个数字代表您正在测试的大小,那么您甚至不需要multiprecision算术软件包-但是,这样的软件包将是获得此类算法实现的最容易的地方。实际上,它可能会直接实现is_square (而且可能比计算平方根更快)。
如果你对滚动你自己的实现感到好奇,通常的方法是牛顿的方法;例如在https://en.wikipedia.org/wiki/Integer_square_root看到的方法。
https://stackoverflow.com/questions/38385428
复制相似问题