Trong phần này, chúng ta sẽ thấy, nếu một số là lũy thừa của 8 hay không bằng cách sử dụng một số phương pháp dễ dàng hơn. Nếu một số như 4096 ở đó, thì chương trình sẽ trả về true, vì đây là lũy thừa của 8.
Bí quyết rất đơn giản. chúng ta sẽ tính log8 (num). Nếu đây là một số nguyên thì n là lũy thừa của 8. Ở đây chúng ta sẽ sử dụng hàm tranc (n) để tìm số nguyên gần nhất của giá trị kép.
Ví dụ
#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"; } }
Đầu ra
4096 is power of 8