কম্পিউটার

সর্বাধিক গুণফল সহ N-এর চারটি গুণনীয়ক নির্ণয় করুন এবং C++ এ N-এর সমান যোগফল নির্ণয় করুন


ধরুন আমাদের একটি পূর্ণসংখ্যা N আছে। কাজ হল N-এর সমস্ত গুণনীয়ক খুঁজে বের করা এবং N-এর চারটি গুণনীয়কের গুণফল প্রদর্শন করা, যেমন −

  • তাদের চারটি গুণনীয়কের যোগফল N

    এর সমান
  • চারটি কারণের গুণফল সর্বাধিক

ধরুন সংখ্যাটি 24, তাহলে গুণফল হল 1296। আমরা জানি সবগুলো গুণনীয়ক হল 1, 2, 3, 4, 6, 8, 12, 24। আমাদেরকে 6 গুণনীয়ক চারবার বেছে নিতে হবে। সুতরাং 6 + 6 + 6 + 6 =24। এখানে পণ্যটি সর্বাধিক।

এটি সমাধান করার জন্য, আমাদের 1 থেকে N পর্যন্ত সমস্ত ফ্যাক্টর খুঁজে বের করতে হবে, তারপর আমাদের এই শর্তগুলি পরীক্ষা করতে হবে

  • যদি N মৌলিক হয়, তাহলে উত্তরটি মিথ্যা হবে

  • প্রদত্ত n 4 দ্বারা বিভাজ্য হলে উত্তর হবে x^4। যেখানে x একটি ভাগফল যখন n 4 দ্বারা বিভাজ্য হয়।

  • যদি উত্তরটি খুঁজে পাওয়া সম্ভব হয় তবে উত্তরে অবশ্যই তৃতীয় শেষ গুণনীয়কটি দুইবার অন্তর্ভুক্ত করতে হবে। তারপর অন্য দুটি ফ্যাক্টরের জন্য নেস্টেড লুপ চালান।

উদাহরণ

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
bool isPrime(int n) {
   if (n <= 1)
      return false;
   if (n <= 3)
      return true;
   if (n % 2 == 0 || n % 3 == 0)
      return false;
   for (int i = 5; i * i <= n; i = i + 6)
      if (n % i == 0 || n % (i + 2) == 0)
   return false;
   return true;
}
void get_factors(int N, vector<int> fact_vectors[]) {
   for (int i = 2; i < N; i++) {
      for (int j = 1; j * j <= i; j++) {
         if (i % j == 0) {
            if (i / j == j)
            fact_vectors[i].push_back(j);
            else {
               fact_vectors[i].push_back(j);
               fact_vectors[i].push_back(i / j);
            }
         }
      }
      sort(fact_vectors[i].begin(), fact_vectors[i].end());
   }
}
int getProduct(int n) {
   vector<int> v[n + 100];
   get_factors(n + 100, v);
   if (n % 4 == 0) {
      int x = n / 4;
      x *= x;
      return x * x;
   } else {
      if (isPrime[n])
      return -1;
      else {
         int ans = -1;
            if (v[n].size() > 2) {
               int fac = v[n][v[n].size() - 3];
               for (int i = v[n].size() - 1; i >= 0; i--) {
                  for (int j = v[n].size() - 1; j >= 0; j--) {
                     if ((fac * 2) + (v[n][j] + v[n][i]) == n)
                     ans = max(ans, fac * fac * v[n][j] * v[n][i]);
                  }
               }
            return ans;
         }
      }
   }
}
int main() {
   int n = 24;
   cout << "The product is: " << getProduct(n);
}

আউটপুট

The product is: 1296

  1. C++ এ পণ্যের সমান LCM সহ সর্বাধিক দৈর্ঘ্যের সাবয়ারে

  2. C++ প্রোগ্রাম যোগফল এবং গুণফল উভয়ই N এর মতো একই সহ দুটি সংখ্যা খুঁজে বের করতে

  3. পাইথন প্রোগ্রামে সর্বোচ্চ গুণফলের সাথে N-এর চারটি গুণনীয়ক এবং N-এর সমান যোগফল নির্ণয় করুন - সেট-2

  4. সর্বাধিক গুণফল সহ N-এর চারটি গুণনীয়ক নির্ণয় করুন এবং পাইথনে N - সেট-2 এর সমষ্টি নির্ণয় করুন