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

জাভাস্ক্রিপ্টে নির্দিষ্ট বাউন্ডের মধ্যে n দিয়ে বিভাজ্য সর্বোচ্চ সংখ্যা

সমস্যা

দুই সংখ্যা দেওয়া আছে: n (ডিভাইজার) এবং b (বাউন্ড)। এমন সবচেয়ে বড় পূর্ণসংখ্যা num খুঁজে বের করতে হবে যাতে:

  • num n দিয়ে বিভাজ্য
  • num ≤ b
  • num > 0

উদাহরণ কোড

const n = 14;
const b = 400;

const biggestDivisible = (n, b) => {
  let max = 0;
  for (let j = n; j <= b; j++) {
    if (j % n == 0 && j > max) {
      max = j;
    }
  }
  return max;
};

console.log(biggestDivisible(n, b));

আউটপুট

392

ব্যাখ্যা

  • লুপ n থেকে b পর্যন্ত চলে।
  • যদি j % n === 0 (বিভাজ্য) এবং j > max হয়, তবে max আপডেট করা হয়।
  • ফলাফল: ১৪ দিয়ে বিভাজ্য এবং ৪০০-এর নিচে সবচেয়ে বড় সংখ্যা ৩৯২ (১৪ × ২৮)।

অপ্টিমাইজড সমাধান (O(1) - লুপ ছাড়া)

গাণিতিক সূত্র ব্যবহার করে সরাসরি বের করা যায়:


const biggestDivisibleOptimized = (n, b) => {
  if (n <= 0) return 0; // ভ্যালিডেশন
  return Math.floor(b / n) * n;
};

console.log(biggestDivisibleOptimized(14, 400)); // 392
console.log(biggestDivisibleOptimized(7, 50));   // 49
console.log(biggestDivisibleOptimized(3, 2));    // 0 (কোনো পজিটিভ মাল্টিপ্লা নেই)

লজিক: b কে n দিয়ে ভাগ দিয়ে ফ্লোর নিলে সর্বোচ্চ মাল্টিপ্লায়ার পাওয়া যায়, তারপর n দিয়ে গুণ করলে সংখ্যাটি পাওয়া যায়।

এজ কেস হ্যান্ডলিং


const safeBiggestDivisible = (n, b) => {
  if (n <= 0 || b <= 0) return 0;
  const result = Math.floor(b / n) * n;
  return result > 0 ? result : 0;
};
  1. জাভাস্ক্রিপ্ট Number() ফাংশন

  2. জাভাস্ক্রিপ্টে সংখ্যা প্যাটার্ন প্রিন্ট করা

  3. জাভাস্ক্রিপ্টে রেঞ্জের মধ্যে নির্দিষ্ট সংখ্যা দিয়ে বিভাজ্য সংখ্যার গণনা

  4. জাভাস্ক্রিপ্টে প্রতিটি ডিজিট তার আগের ডিজিট দিয়ে বিভাজ্য কিনা যাচাই করা