ตรวจสอบว่าตัวเลขที่กำหนดเป็นยกกำลัง 2 หรือไม่ ก่อนอื่นให้ตรวจสอบด้านล่างว่าตัวเลขใดเป็นเลขยกกำลังสองหรือไม่ รหัสนี้จะตรวจสอบว่าตัวเลขเป็นเลขคี่แล้วหารมันพร้อมกันจนกลายเป็น 0 หรือเลขคี่ หากกลายเป็น 0 แสดงว่าเป็นกำลัง 2 ไม่เช่นนั้นจะไม่ใช่
ทางเลือกที่ดีกว่าคือการบันทึกหมายเลข หากเป็นจำนวนเต็ม n จะเป็นกำลัง 2 อย่างอื่นไม่ใช่ ตัวเลขที่ยกกำลัง 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 ซ้ำๆ ด้วย 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; }