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執...