Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรม C++ ตรวจสอบว่าเลขเป็นกำลังของ 2 หรือไม่

ตรวจสอบว่าตัวเลขที่กำหนดเป็นกำลังของ 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;
}