Python程序:判断一个数是否为完全平方数(不使用sqrt函数)


假设我们有一个数字n,我们需要检查n是否为完全平方数。一个完全平方数k可以表示为k = a * a,其中a为整数。我们需要在不使用内置平方根函数的情况下解决这个问题。

因此,如果输入类似于n = 121,则输出将为True,因为121 = 11*11。

为了解决这个问题,我们将遵循以下步骤:

  • 如果n等于0或n等于1,则

    • 返回True

  • 开始 := 2

  • 结束 := n / 2 的向下取整

  • 当开始 <= 结束时,执行以下操作:

    • 临时 := 从开始到结束的所有数字的列表

    • k := 临时列表的中间元素

    • k_平方 := k * k

    • 如果k_平方等于n,则

      • 返回True

    • 如果k_平方 > n,则

      • 开始 := 临时[0]

      • 结束 := k - 1

    • 否则,

      • 开始 := k + 1

      • 结束 := 临时列表的最后一个元素

  • 返回False

示例

让我们看看下面的实现以更好地理解

Open Compiler
def solve(n): if n == 0 or n == 1: return True start = 2 stop = n // 2 while start <= stop: temp = range(start, stop + 1) k = temp[len(temp) // 2] k_squared = k * k if k_squared == n: return True if k_squared > n: start = temp[0] stop = k - 1 else: start = k + 1 stop = temp[-1] return False n = 121 print(solve(n))

输入

121

Learn Python in-depth with real-world projects through our Python certification course. Enroll and become a certified expert to boost your career.

输出

True

更新于: 2021年10月11日

3K+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告