কম্পিউটার টিউটোরিয়াল

জাভাস্ক্রিপ্টে একটি নম্বর অন্য নম্বরের পাওয়ার কিনা যাচাই


সমস্যা বিবরণ

দুটি নম্বর m এবং n দেওয়া আছে। m কি n এর কোনো পাওয়ার (n^k) তা চেক করতে হবে।

উদাহরণ: 8, 2 → true (2³); 100, 10 → true (10²); 0.01, 10 → true (10⁻²); 21, 3 → false

সমাধান

const isPower = (m, n) => {
  let sign = m < 1;
  if (!m) return false;
  while (m !== 1) {
    if (sign) m *= n;
    else m /= n;
    if (sign ? m > 1 : m < 1) return false;
  }
  return true;
};

console.log(isPower(0.01, 10));  // true
console.log(isPower(1000, 10));  // true
console.log(isPower(1001, 10));  // false
console.log(isPower(8, 2));      // true
console.log(isPower(0.125, 2));  // true

আউটপুট

true true false true true

ব্যাখ্যা

  • sign: m < 1 হলে নেগেটিভ এক্সপোনেন্ট বুঝায় (ডিভিশন বদলে মাল্টিপ্লিকেশন)।
  • লুপ চলাকালীন m ১ হয় না।
  • ওভারশুট হলে (sign=true এবং m>1, অথবা sign=false এবং m<1) → false।

বিকল্প পদ্ধতি (Math.log)

const isPowerLog = (m, n) => {
  if (m <= 0 || n <= 0) return false;
  const exp = Math.log(m) / Math.log(n);
  return Number.isInteger(exp) || Math.abs(exp - Math.round(exp)) < 1e-10;
};
  1. জাভাস্ক্রিপ্টে ডাবলটন নম্বর (Doubleton Number) যাচাই করা

  2. জাভাস্ক্রিপ্টে সংখ্যার এক্সপ্যান্ডেড ফর্ম (Expanded Form) বের করা

  3. জাভাস্ক্রিপ্টে উল্টো সংখ্যা প্রাইম কিনা যাচ্চ করা

  4. জাভাস্ক্রিপ্টে সংখ্যাকে প্রাইম ফ্যাক্টর পাওয়ার ও প্রোডাক্ট আকারে প্রকাশ করা