You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何比较整数n的平方根sqrt(n)与有理数p/q?

如何比较整数n的平方根与有理数p/q?

咱们来聊聊怎么比较整数n的平方根sqrt(n)和有理数p/qpq均为整数),这里有两种常用思路,各有优劣:

  • 方案1:直接调用平方根函数做浮点数比较
    直接用表达式 sqrt(n) <= (double)p / q 来判断大小关系就行。这种方法逻辑特别直观,代码写起来也简单,但问题在于调用sqrt()函数的开销比单纯的乘除法要高,性能上会稍逊一筹。

  • 方案2:通过平方转换优化运算
    因为sqrt(n)p/q都是非负数,咱们可以把不等式两边同时平方,转换成浮点数运算的表达式:(double)n * q * q <= p * p。这种方法避开了sqrt()函数,速度比方案1更快,但也有短板:当p/qsqrt(n)非常接近时,浮点数的精度限制可能会让比较结果出错,而且整数转浮点数的操作,相比纯整数运算还是会慢那么一点点。

内容的提问来源于stack exchange,提问作者R2B2

火山引擎 最新活动