檢查給定數字是否是d的冪,其中d是2的冪(Python)


假設我們有一個數字n和另一個值x,我們必須檢查它是否是x的冪,其中x是2的冪。

因此,如果輸入類似於n = 32768,x = 32,則輸出將為True,因為n是x³。

為了解決這個問題,我們將遵循以下步驟:

  • 從主方法執行以下操作:
  • cnt := 0
  • 如果n不為0,並且(n AND (n - 1))等於0,則
    • 當n > 1時,執行
      • n = n/2
      • cnt := cnt + 1
    • 返回cnt mod (log₂c) 是否等於0
  • 返回False

示例

讓我們看下面的實現,以便更好地理解:

 線上演示

def find_pow_of_2(n):
   return (1 + find_pow_of_2(n / 2)) if (n > 1) else 0
def solve(n, c):
   cnt = 0
   if n and (n & (n - 1)) == 0:
      while n > 1:
         n >>= 1
         cnt += 1
      return cnt % (find_pow_of_2(c)) == 0
   return False
n = 32768
x = 32
print(solve(n, x))

輸入

32768, 32

輸出

True

更新於:2021年1月18日

137 次瀏覽

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告