چطور بررسی کنیم یک عدد توانی از دو است یا خیر

هدف این است که با کُد نویسی بفهمیم که یک عدد آیا توان چندمی از عدد دو است یا خیر.

به طور مثال میخواهیم ورودی و خروجی های زیر را داشته باشیم:

روش هایی که برای تشخیص پیشنهاد می شود:

  • بررسی مقدار Log2 عدد (گرفتن لگاریتم پایه دو)
  • بررسی باقی مانده تقسیم های متوالی بر دو
  • تبدیل مبنای عدد به دو و بررسی بیت ها
روش Log2 :

لگاریتم پایه دو عدد را می گیریم و اگر مقدار لگاریتم عدد صحیحی بود می توانیم بگوییم عدد توانی از دو است.

کد جاوای آن به شکل زیر است:

خروجی:

روش بررسی باقی مانده :

این راه حل به این صورت است که سعی می کنیم تقسیم های متوالی عدد بر دو را تا جایی که در نهایت به یک برسیم ادامه دهیم؛ اما اگر در این حین باقی مانده تقسیمی غیر صفر شد، به این معنی است که این عدد توان چندمی از دو نیست. پس اگر تمام تقسیم های متوالی باقی مانده صفر داشتند و در نهایت از عدد اولیه فقط فاکتور ۱ باقی ماند، عدد ما توانی از عدد دو است.

کد جاوای آن به شکل زیر است:

خروجی:

روش تبدیل مبنا به دو و بررسی بیتی :

هر عددی که توانی از دو باشد، در رشته بیتی معادل خود (در مبنای دو) تنها یک بیت ۱ دارد و مابقی همه صفر هستند (مثلاً معادل دودویی چهار برابر با ۱۰۰ و هشت برابر با ۱۰۰۰ و شانزده برابر با ۱۰۰۰۰ است).

پس ما ابتدا عددمان را به معادل دودویی آن تبدیل می کنیم و تعداد بیت های ۱ آن را می شماریم؛ که اگر این تعداد فقط یکی بود، عدد توانی از دو است.

کد جاوای آن به شکل زیر است:

خروجی:

 

نظرتان را برای ما بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *