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.