मान लीजिए कि हमारे पास निचली और ऊपरी सीमा है, और हमें असंक्रमणीय त्रिक (x, y, z) खोजना है, जैसे कि युग्म (x, y) सहअभाज्य हैं (GCD 1 है), युग्म (y, z) सहअभाज्य हैं , लेकिन युग्म (x, z) सहअभाज्य युग्म नहीं है। उदाहरण के लिए, यदि निचली सीमा 2 है, और ऊपरी सीमा 10 है, तो तत्व {2, 3, 4, 5, 6, 7, 8, 9, 10} हैं, यहां संभावित त्रिक है (4, 7, 8) ), यहां (4, 7), और (7, 8) सहअभाज्य हैं, लेकिन (4, 8) सहअभाज्य युग्म नहीं हैं।
हम इसे हल करने के लिए भोले दृष्टिकोण का पालन करेंगे। हम निचली बाउंड और अपर बाउंड की सीमा में सभी संभावित ट्रिपल जेनरेट करेंगे, फिर मानदंड से मेल खाएंगे।
उदाहरण
#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