【python】判断一个自然数是否是某个数的平方?

题目:设计一个算法,判断给定的一个数n是否是某个数的平方,不能使用开方运算。

分析:二分查找法。查找从1~n的数字中,是否存在一个数m,使得m的平方为n。首先判断mid = (1 + n) / 2的平方power与m的大小,如果power > m,那么说明在[1, mid - 1]区间继续查找,否则在[mid + 1, n]区间继续查找。

code:

def isPower(n):

    low = 1

    high = n

    while low < high:

        mid = (high + low) / 2

        power = mid * mid

        # 接着在1~mid-1区间查找

        if power > n:

            high = mid - 1

        # 接着在mid+1~n区间内查找

        elif power < n:

            low = mid + 1

        else:

            return True

    return False

if __name__ == "__main__":

    n1 = 15

    if isPower(n1):

        print(str(n1) + "某个自然数的平方")

    else:

        print(str(n1) + "不是某个自然数的平方")

程序的运行结果:

15不是某个自然数的平方

你可能感兴趣的:(【python】判断一个自然数是否是某个数的平方?)