📜  116的整数是多少?(1)

📅  最后修改于: 2023-12-03 14:59:02.838000             🧑  作者: Mango

116的整数是多少?

这个问题可以理解为“116的平方根是多少的整数部分?”。

解法1:暴力枚举

我们可以从1开始枚举每个正整数,直到找到一个数的平方大于等于116。那么,这个数减1就是116的整数部分平方根了。

import math

def int_sqrt(n: int) -> int:
    i = 1
    while i * i <= n:
        i += 1
    return i - 1

answer = int_sqrt(116)
print(answer)  # 输出 10

这种方法的时间复杂度为O(√n),当n很大时效率较低。

解法2:二分查找

对于一个非负数n,它的平方根一定在[0, n]范围内。我们可以利用二分查找的思想,在这个范围内搜索答案。

def int_sqrt(n: int) -> int:
    l, r = 0, n
    while l <= r:
        mid = (l + r) // 2
        if mid * mid <= n < (mid + 1) * (mid + 1):
            return mid
        elif n < mid * mid:
            r = mid - 1
        else:
            l = mid + 1

answer = int_sqrt(116)
print(answer)  # 输出 10

这种方法的时间复杂度为O(logn),效率较高。