2

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

整数的 GMP 平方根会截断结果,因此 10 的平方根将报告为 3。浮点平方根按预期工作,但我需要取下一个最大的整数。mpf_get_d向零舍入,但除此之外做我想要的。我怎样才能得到一个大数的平方根的上限?

4

2 回答 2

7

这是一个快速而肮脏的技巧:

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

trunc_sqrt(n)您当前使用的 GMP 整数平方根函数在哪里。

这应该适用于所有整数n > 0

于 2012-05-09T21:49:33.327 回答
1

有什么不使用的具体原因mpf_ceil()吗?对我来说,这听起来像是最合乎逻辑的一步,除非我错过了什么。

编辑:重新阅读您的问题后,有什么理由将数字视为整数而不是浮点数?

于 2012-05-09T21:49:40.150 回答