ধরুন আমাদের নিম্ন এবং উপরের সীমা আছে, এবং আমাদের অট্রানসিটিভ ট্রিপলেট (x, y, z) খুঁজে বের করতে হবে, যেমন জোড়া (x, y) coprime (GCD হল 1), জোড়া (y, z) coprime , কিন্তু জোড়া (x, z) একটি coprime জোড়া নয়। উদাহরণস্বরূপ, যদি নীচের সীমা 2 হয় এবং উপরের সীমাটি 10 হয়, তাহলে উপাদানগুলি হল {2, 3, 4, 5, 6, 7, 8, 9, 10}, এখানে সম্ভাব্য ট্রিপলেট হল (4, 7, 8) ), এখানে (4, 7), এবং (7, 8) coprime, কিন্তু (4, 8) একটি coprime জোড়া নয়৷
আমরা এটি সমাধানের জন্য নিরীহ পন্থা অনুসরণ করব। আমরা লোয়ার বাউন্ড এবং আপার বাউন্ড রেঞ্জে সমস্ত সম্ভাব্য ট্রিপলেট তৈরি করব, তারপর মানদণ্ডের সাথে মেলে।
উদাহরণ
#include <iostream>
#include <algorithm>
using namespace std;
bool isCoprime(int a, int b){
return (__gcd(a, b) == 1);
}
void tripletInRange(int left, int right) {
bool flag = false;
int A, B, C;
// Generate and check for all possible triplets
// between L and R
for (int a = left; a <= right; a++) {
for (int b = a + 1; b <= right; b++) {
for (int c = b + 1; c <= right; c++) {
if (isCoprime(a, b) && isCoprime(b, c) && ! isCoprime(a, c)) {
flag = true;
A = a;
B = b;
C = c;
break;
}
}
}
}
if (flag == true) {
cout << "(" << A << ", " << B << ", " << C << ")" << " is one
such possible triplet between " << left << " and " << right << endl;
} else {
cout << "No Such Triplet exists between " << left << " and " << right << endl;
}
}
int main() {
int left = 2, right = 10;
tripletInRange(left, right);
} আউটপুট
(8, 9, 10) is one such possible triplet between 2 and 10