python 判斷乙個數是否是2的冪次方

2021-09-27 01:46:11 字數 572 閱讀 1775

乙個數是否是2的冪次方,比較常用的是遞迴和移位運算進行判斷。

1. 遞迴演算法的思想很簡單,就是不斷的模上2去判斷。

2. 如果乙個數是2的冪,那麼它的二進位制表示中就只有一位1,例如:10000,1000,100等等。所以如果對數字1進行移位操作,總會在移到某個位的時候和這個數相等。這就是移位判斷的思想。

def twopower(n):

res = 1

while res < n:

res = res << 1

if res == n:

return true

else:

return false

3. 因為二進位制表示的2的冪次方數中只有乙個1,後面跟的是n個0; 因此問題可以轉化為判斷1後面是否跟了n個0。如果將這個數減去1後會發現,僅有的那個1會變為0,而原來的那n個0會變為1;因此將原來的數與上(&)減去1後的數字,結果為零。

def twopart(n):

return n&(n-1) == 0

判斷是不是8的冪次方?:判斷移動位數會否%3 == 0

判斷乙個數是否是回文數

題目 定義回文數的概念如下 如果乙個非負數左右完全對應,則該數是回文數,如 121,22 如果乙個負數的絕對值左右完全對應,則該數是回文數,如 121,22 public static void main string args printrandm arr,3 1 5 4 system.out.p...

判斷乙個數是否是質數

乙個數如果可以進行因數分解,那麼分解的兩個數一定是乙個小於等於sqrt n 乙個大於等於sqrt n 因此遍歷到sqrt n 即可。因為如果sqrt n 左側找不到因數,右側也一定找不到因數。中心思想 遍歷n是否能被2到sqrt n 之間的數整除,如果不能則為質數。import math defis...

判斷乙個數是否是素數

素數釋義 曾稱質數。乙個大於1的正整數,如果除了1和它本身以外,不能被其他正整數整除,就叫素數。如2,3,5,7,11,13,17 public boolean isprime int n for int i 2 i從2開始,一直到小於其自身,依次判斷能否被n整除即可,能夠整除則不是質數,否則是質數...