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

Math লাইব্রেরি ছাড়া পারফেক্ট স্কয়ার চেক - JavaScript

এই টিউটোরিয়ালে আমরা শিখব কিভাবে Math.sqrt() বা অন্য কোনো ম্যাথ লাইব্রেরি ব্যবহার না করে একটি সংখ্যা পারফেক্ট স্কয়ার কিনা তা চেক করা যায়।

পারফেক্ট স্কয়ার কী?

যেসব সংখ্যা যেকোনো পূর্ণসংখ্যার বর্গ দিয়ে প্রকাশ করা যায়, সেগুলোকে পারফেক্ট স্কয়ার বলে। যেমন: ৪ (২²), ১৬ (৪²), ৮১ (৯²), ৪৪১ (২১²)।

অ্যালগরিদম

১ থেকে শুরু করে প্রতিটি সংখ্যার বর্গ চেক করুন যতক্ষণ না বর্গটি ইনপুট সংখ্যার চেয়ে বড় হয়।

সমাধান

const isPerfectSquare = num => {
  // নেগেটিভ সংখ্যা পারফেক্ট স্কয়ার হতে পারে না
  if (num < 0) return false;
  // ০ এবং ১ পারফেক্ট স্কয়ার
  if (num === 0 || num === 1) return true;
  
  let i = 1;
  while (i * i <= num) {
    if (i * i === num) {
      return true; // পারফেক্ট স্কয়ার পাওয়া গেল
    }
    i++;
  }
  return false; // কোনো মিল পাওয়া যায়নি
};

// টেস্ট কেস
console.log(isPerfectSquare(81));    // true (9²)
console.log(isPerfectSquare(9801));  // true (99²)
console.log(isPerfectSquare(99));    // false
console.log(isPerfectSquare(441));   // true (21²)
console.log(isPerfectSquare(7648));  // false

অপ্টিমাইজড সংস্করণ (বাইনারি সার্চ)

const isPerfectSquareOptimized = num => {
  if (num < 0) return false;
  if (num < 2) return true;
  
  let left = 2, right = Math.floor(num / 2);
  
  while (left <= right) {
    const mid = Math.floor((left + right) / 2);
    const square = mid * mid;
    
    if (square === num) return true;
    if (square < num) left = mid + 1;
    else right = mid - 1;
  }
  return false;
};

সময় জটিলতা

  • লিনিয়ার: O(√n)
  • বাইনারি সার্চ: O(log n) - বড় সংখ্যার জন্য দ্রুত

উৎপাদন

true
true
false
true
false
  1. জাভাস্ক্রিপ্টে নাল ভ্যালু চেক করার উপায়

  2. জাভাস্ক্রিপ্টে অবজেক্ট অ্যারে কিনা চেক করার উপায়

  3. লাইব্রেরি ছাড়া জাভাস্ক্রিপ্টে ডেটা ইনক্রিমেন্ট করা

  4. জাভাস্ক্রিপ্টে চেকবক্স চেক/আনচেক করা