সমস্যা
একটি ইন্টিজার N দেওয়া। N-এর চেয়ে ছোট বা সমান তিনটি ইন্টিজার খুঁজুন যাদের LCM (লিস্ট কমন মাল্টিপল) সর্বোচ্চ হয়।
অ্যালগরিদম (গাণিতিক পর্যবেক্ষণ)
- N বিজোড় হলে:
N, N-1, N-2(এই তিনটি পেয়ারওয়াইজ কো-প্রাইম)। - N জোড় হলে:
- যদি
gcd(N, N-3) == 1হয়, তবেN, N-1, N-3। - অন্যথায়
N-1, N-2, N-3।
- যদি
C++ কোড
#include <bits/stdc++.h>
using namespace std;
void findMaximumLCM(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;
}
}
int main() {
findMaximumLCM(34); // 34 33 31
}
আউটপুট
34 33 31