在 Python 中不使用 sqrt 函数来检查数字是否为完全平方数的程序

pythonserver side programmingprogramming更新于 2025/12/17 14:04:17

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

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

要解决这个问题,我们将遵循以下步骤 −

  • 如果 n 与 0 相同或 n 与 1 相同,则

    • 返回 True

  • start := 2

  • stop := n / 2 的 floor

  • 当 start <= stop 时,执行

    • temp := 从 start 到 stop 的所有数字的列表

    • k := 中间元素temp

    • k_squared := k * k

    • 如果 k_squared 与 n 相同,则

      • 返回 True

    • 如果 k_squared > n,则

      • start := temp[0]

      • stop := k - 1

    • 否则,

      • start := k + 1

      • stop := temp 的最后一个元素

  • 返回 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

相关文章


有用资源