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

示例

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

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

输出

True

更新于: 2021年10月11日

3K+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.