获取用户输入的数值

n = int(input())

设置左右边界值

left, right = 0, n

开始二分查找

while left <= right:

# 获取中间值
mid = (left + right) // 2

# 判断中间值的平方是否小于等于n
if mid ** 2 <= n:
    # 如果是,将左边界值更新为mid+1,因为mid已经被判断过了,不需要再次判断
    left = mid + 1
else:
    # 如果不是,将右边界值更新为mid-1,因为mid及其右侧的值都不符合条件
    right = mid - 1

输出结果,由于left指向的是符合条件的最后一个数值+1,所以需要减去1

print(left - 1)

n = intinputleft right = 0 nwhile left = right mid = left + right 2 if mid 2 = n left = mid + 1 else right = mid - 1printleft - 1给这一段代码打上非常详细的注释

原文地址: https://www.cveoy.top/t/topic/e9mu 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录