একটি পূর্ণসংখ্যা অ্যারে দেওয়া থাকলে, যেটি দুটি সংখ্যা A এবং B-এর সব ডিভাইজার ধারণ করে। যদি কোনো সংখ্যা A এবং B উভয়ের ডিভাইজার হয়, তবে সেটি দুবার থাকবে। A এবং B বের করতে হবে।
পদ্ধতি
- অ্যারে সর্ট করুন।
- সর্বোচ্চ মান হবে A।
- পিছন থেকে স্ক্যান করুন: প্রথম যে সংখ্যা A-কে ভাগ করে না, বা ডুপ্লিকেট পাওয়া যায়, সেটি হবে B।
উদাহরণ
#include <bits/stdc++.h>
using namespace std;
void findAB(int arr[], int n) {
sort(arr, arr+n);
int A = arr[n-1], B = -1;
for (int i = n-2; i >= 0; i--) {
if (A % arr[i] != 0) { B = arr[i]; break; }
if (i > 0 && arr[i] == arr[i-1]) { B = arr[i]; break; }
}
cout << "A = " << A << ", B = " << B << endl;
}
int main() {
int arr[] = {3,2,3,4,12,6,1,1,2,6};
findAB(arr, 10);
return 0;
}
আউটপুট
A = 12, B = 6