GMP上限功能

时间:2012-05-09 21:43:53

标签: c math gmp

我想用GMP找到一个非常大的平方根的上限。在C中,ceil(sqrt(n))

整数的GMP平方根截断结果,因此10的平方根将报告为3.浮点平方根按预期工作,但我需要采用下一个最大整数。 mpf_get_d向零舍入,但除此之外我想做什么。如何获得大数平方根的上限?

2 个答案:

答案 0 :(得分:7)

这是一个快速而肮脏的伎俩:

ceil( sqrt(n) ) = trunc_sqrt(n - 1) + 1

其中trunc_sqrt(n)是您当前使用的GMP的整数平方根函数。

这适用于所有整数n > 0

答案 1 :(得分:1)

是否有某些特定原因不使用mpf_ceil()?对我来说听起来很合乎逻辑,除非我错过了什么。

编辑:在重新阅读你的问题后,有什么理由将这些数字视为整数浮点数?