判斷乙個int型別的數是不是2的整數次冪

2025-07-21 15:40:06 字數 1920 閱讀 4578

1樓:

當變數i大於0,且i&(i-1)等於0時i則為2的整數次冪!看下面**:

#include ""

int main(void)

判斷乙個整數是不是2的冪

2樓:網友

將這個數分解質因數,如果分解質因數後只含質因數2,則這個整數一定是2的冪。

3樓:網友

反覆除以2,看是否能除到商是1(商如果是1,即2的0次冪)。

4樓:數想

反覆除以2,看是否整除。

5樓:匿名使用者

int shuzhi = 1024 ; //需要判定的數bool flag = false; //判斷標誌for(int i=0; i<=64; i++)if(flag == true)

else

如何快速判斷乙個數是不是2的整數次冪

6樓:匿名使用者

拿這個數來除以2,得到商和餘數。

再用商除以2,又得到商和餘數。

重複上面的操作,直到商為0,當商為0,餘數也為0時,這個數就是2的整數次冪當商為0,餘數不為0時,這個數就不是2的整數次冪。

7樓:匿名使用者

判斷裡面是不是隻有乙個1.二進位表示。應該是n&(n-1)

演算法:如何判斷乙個數是否是2的整數次冪?

8樓:

int fun(n)

輸野轎入n ,如果頌空肆是2 的整數次冪,則返回1,否則返回0 */

int m ;

m=n;for(;;

if( m== 1 )

return 1;

if( m%2 ==1 )

return 0

elsem=m/虧譁2;

如何判斷乙個數num是不是2的正整數次冪,比如2,4,8,

9樓:塵雨洛煙

在csdn中有討論這個問題的,比較經典的解法是:凡是2的n次方的整數,它的二進位的所有位中都只有乙個1,並且這個1肯定在最高位。所以這個問題就變成了如何來計算二進位位中1的個數,可用以下**:

int fuc(int i)

c++判斷乙個整數是否為2的冪

10樓:時梭零

這題用位運算很快的,演算法核心**就四行:

if(n&(n-1)==0)

cout<<"1"cout<<"0"《其他輸入資料的部分補一下就行。

11樓:網友

程式本是演算法應該來是沒問題的。

自我用vc跑正常。

問題可能在於f(num/2);這個地方沒有return,試著改成return f(num/2);

=另外,還有一種快速的判定方法。如果乙個數是2的冪,那麼它的二進位數只有這個數的最高位是1。比如二進位1,10,100,1000.這樣可以用迴圈+移位判斷。

12樓:千鋒教育

看到這個。

問題,直接的想法估計是對這個數直接判斷,如果這個數是2的版n次方冪,那可以將這個數先權對2取模為0,再對2整除,再對2取模,一直到這個數最後為2;如果不能這樣做,那麼這個整數就不是2的n次方冪,**如下:

int i = 128; //待判斷的整數int count = 1; //待判斷的整數是2的count次方while (i)

if (0 == i%2)

else}

13樓:三號床鋪的四哥

可以使bai用遞du歸zhi演算法:

dao內。bool is_power_of_two (int n)

如何判斷數是不是素數,如何判斷一個數是不是素數????

方法一 用試除法判斷一個自然數a是不是質數時,用各個質數從小到大依次去除a,如果到某一個質數正好整除,這個a就可以斷定不是質數 如果不能整除,當不完全商又小於這個質數時,就不必再繼續試除,可以斷定a必然是質數 方法二 只要找出x為一個奇數和一個偶數平方差的形式 這是一定的 便可以a2 b2 a b ...

判斷正整數是不是素數,判斷一個正整數是不是素數

a b c a c b。a如果能被b整除,那麼a一定也能夠被商c整除。所以在做整除時,每一個較小的除數,總有一個較大的對應的商數。如果除到商開始比除數小的時候,還沒有出現整除的情況,後面再大的除數也不用再試了。因為後面如果存在一個較大的除數能夠整除,那麼在這之前它所對應的較小的那個商數,也早就能整除...

用C如何判斷某個數是不是迴文數C編寫一個程式,判斷一個整數是否為迴文數

1 開啟visual studio軟體,準備好一個新的空白cpp檔案,用於稍後編寫 2 這裡定義一個名為palindrome的函式,用來處理判斷迴文的過程,判斷的大致思路就是將一個數反著排列一遍,如果和原先的數一樣,那麼就是迴文數,排列過程用到了餘數和整除 3 最後儲存一下檔案,按住crtl f5執...