我想用GMP求一个非常大的数的平方根的上限。在C语言中,ceil(sqrt(n))。
整数的GMP平方根会截断结果,因此10的平方根将报告为3。浮点平方根的工作方式与预期一样,但我需要取下一个最大的整数。mpf_get_d向零四舍五入,但在其他情况下我想要的就是它。怎样才能得到大数的平方根的上限?
发布于 2012-05-10 05:49:40
不使用mpf_ceil()有什么特别的原因吗?听起来像是mots的逻辑步骤,除非我遗漏了什么。
编辑:重读你的问题后,有没有理由将数字视为浮点数上的整数?
发布于 2012-05-10 05:49:33
这里有一个快速和肮脏的技巧:
ceil( sqrt(n) ) = trunc_sqrt(n - 1) + 1其中trunc_sqrt(n)是您当前正在使用的GMP的整数平方根函数。
这应该适用于所有整数n > 0。
https://stackoverflow.com/questions/10524526
复制相似问题