Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

숫자가 2의 거듭 제곱인지 여부를 찾는 C++ 프로그램?

<시간/>

주어진 숫자가 2의 거듭제곱인지 확인합니다. 먼저 아래의 숫자가 2의 거듭제곱인지 아닌지 확인합니다. 이 코드는 숫자가 홀수인지 확인한 다음 0 또는 홀수가 될 때까지 동시에 나눕니다. 0이 되면 거듭제곱 2이고 그렇지 않으면 그렇지 않습니다.

더 나은 선택은 숫자의 로그를 취하는 것입니다. 정수이면 n은 2의 거듭제곱이고 그렇지 않으면 n입니다. 2의 거듭제곱인 숫자:

2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048 ...
22 = 4
25 = 32
210 = 1024


Input: 8
Output: Number is power of 2

설명

이에 대한 간단한 방법은 밑이 2인 숫자의 로그를 취하는 것입니다. 정수를 얻으면 숫자는 2의 거듭제곱이 됩니다.

N이 짝수인 경우 단순히 N을 2로 반복적으로 나눔으로써. 1로 끝나면 N은 2의 거듭제곱입니다.

예시

#include <iostream>
using namespace std;
int main() {
   int n=8;
   if(n>0) {
      while(n%2 == 0) {
         n/=2;
      }
      if(n == 1) {
         cout<<"Number is power of 2"<<endl;
      }
   }
   if(n == 0 || n != 1) {
      cout<<"Number is not power of 2"<<endl;
   }
   return 0;
}