ตรวจสอบว่าตัวเลขที่กำหนดเป็นกำลังของ 2 หรือไม่ ก่อนอื่นดูว่าตัวเลขไหนเป็นกำลังของ 2 โค้ดนี้ตรวจสอบว่าเลขเป็นคี่หรือไม่ แล้วหารซ้ำจนกลายเป็น 0 หรือคี่ ถ้ากลายเป็น 0 แสดงว่าเป็นกำลังของ 2 มิฉะนั้นไม่ใช่
วิธีที่ดีกว่าคือการหา log ของตัวเลข ถ้าเป็นจำนวนเต็ม แสดงว่า n เป็นกำลังของ 2 มิฉะนั้นไม่ใช่ ตัวเลขที่เป็นกำลังของ 2:
2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048 ... 2² = 4, 2⁵ = 32, 2¹⁰ = 1024
Input: 8 Output: Number is power of 2
คำอธิบาย
วิธีง่ายๆ คือหา log ของตัวเลขฐาน 2 ถ้าได้จำนวนเต็ม แสดงว่าเป็นกำลังของ 2
หรือหารซ้ำๆ ด้วย 2 ถ้า N เป็นเลขคู่ ถ้าสิ้นสุดที่ 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;
}