এই টিউটোরিয়ালে, আমরা একটি প্রোগ্রাম লিখব যা LCM কনসেপ্টের ওপর ভিত্তি করে। যেমন টাইটেলে বলা হয়েছে, আমাদের তিনটি সংখ্যা বের করতে হবে যেগুলো দেওয়া সংখ্যা থেকে কম বা সম এবং যাদের LCM সর্বোচ্চ।
একটি উদাহরণ দেখি।
সমস্যাটি সমাধান করার আগে LCM কী এবং তার প্রোগ্রাম লিখি।
LCM হলো লিস্ট কমন মাল্টিপল (Least Common Multiple)। এটাকে লিস্ট কমন ডিভাইজর ও বলা হয়। দুটি পজিটিভ নম্বর a এবং b-এর জন্য, LCM হলো সবচেয়ে ছোট ইন্টিজার যা a এবং b উভয় দিয়ে ভাগযোগ্য।
যদি দেওয়া ইন্টিজারগুলোর কোনো কমন ফ্যাক্টর না থাকে, তবে LCM হলো দেওয়া সংখ্যাগুলোর গুণফল।
উদাহরণ
দুই পজিটিভ নম্বরের LCM বের করার প্রোগ্রাম লিখি।
#include <iostream>
using namespace std;
int main() {
int a = 4, b = 5;
int maximum = max(a, b);
while (true) {
if (maximum % a == 0 && maximum % b == 0) {
cout << "LCM: " << maximum << endl;
break;
}
maximum++;
}
}
আউটপুট
20
আমরা দেখেছি LCM কী এবং দুটি পজিটিভ নম্বরের LCM বের করার প্রোগ্রাম।
সমস্যাটি সমাধানের ধাপগুলো:
- যদি সংখ্যাটি বিজোড় হয় তবে সর্বোচ্চ LCM পাওয়া তিনটি নম্বর হলো n, n - 1, এবং n - 2।
- যদি সংখ্যাটি জোড় হয় এবং n এবং n - 3-এর GCD 1 হয় তবে তিনটি নম্বর হলো n, n - 1, এবং n - 3।
- অন্যথায় তিনটি নম্বর হলো n - 1, n - 2, এবং n - 3।
উদাহরণ
কোডটি দেখি।
#include <bits/stdc++.h>
using namespace std;
void threeNumbersWithMaxLCM(int n) {
if (n % 2 != 0) {
cout << n << " " << (n - 1) << " " << (n - 2);
} else if (__gcd(n, (n - 3)) == 1) {
cout << n << " " << (n - 1) << " " << (n - 3);
} else {
cout << (n - 1) << " " << (n - 2) << " " << (n - 3);
}
cout << endl;
}
int main() {
int n = 18;
threeNumbersWithMaxLCM(n);
return 0;
}
আউটপুট
17 16 15
উপসংহার
টিউটোরিয়ালে যদি কোনো প্রশ্ন থাকে, তবে কমেন্ট সেকশনে জানান।