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次方,有沒有...