Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我想用GMP找到一个非常大的平方根的上限。在 C 中,ceil(sqrt(n)).
ceil(sqrt(n))
整数的 GMP 平方根会截断结果,因此 10 的平方根将报告为 3。浮点平方根按预期工作,但我需要取下一个最大的整数。mpf_get_d向零舍入,但除此之外做我想要的。我怎样才能得到一个大数的平方根的上限?
mpf_get_d
这是一个快速而肮脏的技巧:
ceil( sqrt(n) ) = trunc_sqrt(n - 1) + 1
trunc_sqrt(n)您当前使用的 GMP 整数平方根函数在哪里。
trunc_sqrt(n)
这应该适用于所有整数n > 0。
n > 0
有什么不使用的具体原因mpf_ceil()吗?对我来说,这听起来像是最合乎逻辑的一步,除非我错过了什么。
mpf_ceil()
编辑:重新阅读您的问题后,有什么理由将数字视为整数而不是浮点数?