题目描述
给定一个非负整数,求它的开方,向下取整。

输入输出样例
输入一个整数,输出一个整数。
Input: 8
Output: 2
8 的开方结果是 2.82842...,向下取整即是 2。

代码实现

def mySqrt(x):
    if x == 0:
        return 0
    if x < 4:
        return 1
    start , end = 2 , x//2
    while True:
        mid = start + (end-start)//2
        if mid**2 <= x and (mid+1)**2 > x:
            return mid
        if mid**2 < x:
            start = mid + 1
        if mid**2 > x:
            end = mid - 1