我想用GMP找到一个非常大的平方根的上限。在C中,ceil(sqrt(n))
。
整数的GMP平方根截断结果,因此10的平方根将报告为3.浮点平方根按预期工作,但我需要采用下一个最大整数。 mpf_get_d
向零舍入,但除此之外我想做什么。如何获得大数平方根的上限?
答案 0 :(得分:7)
这是一个快速而肮脏的伎俩:
ceil( sqrt(n) ) = trunc_sqrt(n - 1) + 1
其中trunc_sqrt(n)
是您当前使用的GMP的整数平方根函数。
这适用于所有整数n > 0
。
答案 1 :(得分:1)
是否有某些特定原因不使用mpf_ceil()
?对我来说听起来很合乎逻辑,除非我错过了什么。
编辑:在重新阅读你的问题后,有什么理由将这些数字视为整数浮点数?