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

2021-09-27 06:32:56 字數 731 閱讀 7491

判斷乙個數是不是2的幾次冪,最簡單粗暴的做法就是直接迭代除以2,這裡有乙個更好的方法,那就是採用位運算。

我們觀察下面屬於2的幾次冪的數的變化規律,用2進製表示。

十進位制           二進位制

0 0

2 10

4 100

8 1000

16 10000

我們會發現凡是2的幾次冪0除外,用二進位制表示第一位全是1,後面全是0。這個規律好像是這樣但是有什麼用呢,不要急,你再看一下比他小乙個數的規律就懂了。

十進位制            二進位制

1 01

3 011

7 0111

15 01111

發現比他小乙個數全是第一位為0後面全為1,剛剛跟2的幾次冪對應的數相反,這時就可以用位運算中的與運算來解決了。

解決**:

def judge(num):

num =int(num)

return

true

if num == 0 or num & (num - 1) == 0 else

false

判斷乙個數是否是回文數

題目 定義回文數的概念如下 如果乙個非負數左右完全對應,則該數是回文數,如 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整除即可,能夠整除則不是質數,否則是質數...