在 C++ 中检查一个数是否可​​以表示为 2 的非零幂之和

c++server side programmingprogramming

在这里我们将看到,我们是否可以将一个数表示为两个非零的 2 的幂之和。因此我们将检查给定的数 N 是否可以表示为 (2x + 2y),其中 x、y > 0。假设一个数是 10,它可以表示为 23 + 21

方法很简单。有两种情况。如果数 n 是偶数,它可以表示为 2x。其中 x > 0。另一种情况是,如果 N 是奇数,它永远不能表示为 2 的幂之和。我们不能使用幂 0,所以我们不能得到奇数。对于所有奇数,其二进制表示的 LSb 为 1

示例

#include <iostream>
using namespace std;
bool isSumofTwosPower(int n) {
   if((n & 1) == 0){
      return true;
   } else {
      return false;
   }
}
int main() {
   int num = 86;
   if(isSumofTwosPower(num)){
      cout << "Can be represented";
   } else {
      cout << "Cannot be represented";
   }
}

输出

Can be represented

相关文章