猜猜 python 中的最接近的平方根是什么
假设我们有一个非负数 n,我们必须找出 r 使得 r * r = n 并且必须向下舍入到最接近的整数。我们必须在不使用内置平方根函数的情况下解决这个问题。
因此,如果输入类似于 1025,则输出将为 32。
为了解决这个问题,我们将遵循以下步骤 −
- 如果 n <= 1,则
- 返回 n
- 起始 := 1,结束 := n
- 当起始 < 结束时,执行
- 中位数 := 起始 + 结束/2
- 如果中位数 * 中位数 <= n,则
- 起始 := 中位数 + 1
- 否则,
- 结束 := 中位数
- 返回起始 - 1
让我们看看以下实现以获得更好的理解 −
示例
class Solution: def solve(self, n): if n <= 1: return n start, end = 1, n while start < end: mid = start + end >> 1 if mid * mid <= n: start = mid + 1 else: end = mid return start - 1 ob = Solution() print(ob.solve(1025))
输入
1025
输出
32
广告