কম্পিউটার

C++ এ একটি পরিসরে একটি নন-ট্রানজিটিভ কপ্রিম ট্রিপলেট খোঁজা


ধরুন আমাদের নিম্ন এবং উপরের সীমা আছে, এবং আমাদের অট্রানসিটিভ ট্রিপলেট (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

  1. C++-এ অ্যারেতে পরিসরের গড়

  2. C++-এ অ্যারেতে সর্বোচ্চ ট্রিপলেট যোগফল

  3. C++ এ প্রাইম ট্রিপলেট

  4. C++ এ একটি পরিসরে সেট বিট কপি করুন