একটি দেয়া সংখ্যা ২-এর পাওয়ার কিনা তা চেক করুন। প্রথমে নিচে দেখুন কোন সংখ্যাগুলো ২-এর পাওয়ার এবং কোনগুলো নয়। এই কোডটি চেক করে সংখ্যাটি বিজোড় কিনা এবং তারপর এটিকে সমকালীনভাবে ভাগ করে যতক্ষণ না এটি ০ বা বিজোড় হয়। যদি এটি ০ হয় তবে এটি ২-এর পাওয়ার অন্যথায় নয়।
একটি ভালো পছন্দ হলো সংখ্যার লগ নেওয়া। যদি এটি ইন্টিজার হয়, তবে n ২-এর পাওয়ার অন্যথায় নয়। ২-এর পাওয়ার হয় এমন সংখ্যাগুলো:
2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048 ... 22 = 4 25 = 32 210 = 1024
ইনপুট: 8 আউটপুট: Number is power of 2
ব্যাখ্যা
এই জন্য একটি সহজ মেথড হলো সংখ্যার লগ বেস ২-এ নেওয়া এবং যদি আপনি ইন্টিজার পান তবে সংখ্যাটি ২-এর পাওয়ার।
সহজে বারবার N কে ২ দিয়ে ভাগ করে যদি N ইভেন নম্বর হয়। যদি এটি ১-এ শেষ হয় তবে N ২-এর পাওয়ার।
উদাহরণ
#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; }