本文共 891 字,大约阅读时间需要 2 分钟。
1. 暴力搜索法
这种方法通过暴力检查每个数是否为平方数,时间复杂度为O(√n)。具体实现如下:
def fun1(num):'''顺序查找判断是否为平方数'''if num == 1: return Truefor i in range(2, int(num**0.5)+1): if i*i == num: return Truereturn False2. 二分查找法
通过二分查找优化暴力搜索,时间复杂度降至O(log n)。实现如下:
def fun2(num):'''优化后的二分查找法'''left, right = 0, numwhile left <= right: mid = (left + right) // 2 square = mid * mid if square == num: return True elif square < num: left = mid + 1 else: right = mid - 1return False3. 数学方法
利用数学性质快速判断是否为平方数。例如,平方数的奇偶性特征:
def fun4(num):'''基于奇数和的减法法'''x = 1while num > 0: num -= x x += 2return num == 04. 牛顿迭代法
结合数值计算方法,通过迭代逼近找到近似解,再验证其平方性质。这种方法在某些场景下效率更高:
def fun3(num):'''数学优化方法'''# 详细解释与实现步骤(此处简化展示)
转载地址:http://toqfk.baihongyu.com/