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

C++에서 숫자가 8의 거듭제곱인지 확인

<시간/>

이 섹션에서는 숫자가 8의 거듭제곱인지 또는 더 쉬운 방법을 사용하지 않는지 확인할 것입니다. 4096과 같은 숫자가 있으면 프로그램은 8의 거듭제곱이므로 true를 반환합니다.

비결은 간단합니다. log8(num)을 계산합니다. 이것이 정수이면 n은 8의 거듭제곱입니다. 여기서 tranc(n) 함수를 사용하여 double 값의 가장 가까운 정수를 찾습니다.

예시

#include <iostream>
#include <cmath>
using namespace std;
bool isPowerOfEight(int n) {
   double val = log(n)/log(8); //get log n to the base 8
   return (val - trunc(val) < 0.000001);
}
int main() {
   int number = 4096;
   if(isPowerOfEight(number)){
      cout << number << " is power of 8";
   } else {
      cout << number << " is not power of 8";
   }
}

출력

4096 is power of 8