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

2021-10-04 05:35:37 字數 1365 閱讀 6403

2的幾次冪

思路:在二進位制中 2^n形式如下

2^1=2:10                          1:01

2^2=4:100                        3:011

2^3=8:   1000                     4:0111

2^4=16:  10000                  5:01111

def ispoweroftwo(n: int) -> bool:

if n==0:

return false

else:

return n&(n-1)==0

判斷n是否是3的幾次冪

1. 在 int 型別範圍內,最大的乙個3的冪數,一定是其他3的冪數的3^x 倍

2. 除3餘數==0, 且最後是 3/3==1,則為3^x

int_max = 0x7fffffff

int_min = 0x80000000

import math

def power_3(n):

if n < 1: return false

import math

k = math.log(int_max) // math.log(3)

big3 = math.pow(3, k)

return big3 % n == 0

def power_3(n):

if n<1: return false

else:

while n%3==0:

n = n//3

return n==1

判斷n是4的幾次冪

1.4^1: 4      100                       0101

4^2: 16     10000                  10101

4^3: 64      1000000            1010101010

2. 除4餘數==0, 且最後是 4/4==1,則為4^x

def power_4(n):

if n==1:

return true

return n&(n-1) and n&0x55555555

def power_44(num):

if num < 1:

return false

else:

while num > 1:

num = num / 4

return num == 1

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

乙個數是否是2的冪次方,比較常用的是遞迴和移位運算進行判斷。1.遞迴演算法的思想很簡單,就是不斷的模上2去判斷。2.如果乙個數是2的冪,那麼它的二進位制表示中就只有一位1,例如 10000,1000,100等等。所以如果對數字1進行移位操作,總會在移到某個位的時候和這個數相等。這就是移位判斷的思想。...

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

給定乙個整數n,判斷它是否為2的次方冪。思路 2,4,8,16,32.都是2的n次冪 轉換為二進位制分別為 10 100 1000 10000 100000 這些數減1後與自身進行按位與,如果結果為0,表示這個數是2的n次冪 01 011 0111 01111 011111 10 01 0 100 ...

判斷乙個數是否是2的N次方

對於判斷乙個數是否為2的n次方問題,通常想到的最為直接的辦法就是對這個數不斷對2取餘,為0就將該數變為該數除以2,直到最後該數為1為止。void judge int n printf no n return 不過上面的方法並不是較好的方法,其實還有更為簡潔高效的方法 乙個整數,若是2的n次方,有沒有...