কম্পিউটার

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


ধারণা

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

  • চারটি গুণনীয়কের যোগফল N এর সমান।
  • চারটি কারণের গুণফল সবচেয়ে বড়।

এটা দেখা গেছে যে যদি 4টি ফ্যাক্টর খুঁজে পাওয়া অসম্ভব হয় তাহলে "সম্ভব নয়" প্রিন্ট করুন।

এটি লক্ষ করা উচিত যে পণ্যটি সর্বাধিক করার জন্য চারটি কারণ একে অপরের সমান হতে পারে।

ইনপুট

24

আউটপুট

All the factors are -> 1 2 4 5 8 10 16 20 40 80
Product is -> 160000

গুণনীয়ক 20 চারবার নির্বাচন করুন,

অতএব, 20+20+20+20 =24 এবং পণ্য সর্বাধিক।

পদ্ধতি

এই সমস্যাটি সমাধান করার জন্য ধাপে ধাপে অ্যালগরিদম নিচে দেওয়া হল -

  • প্রথমে 1 থেকে 'N' এর বর্গমূল পর্যন্ত গিয়ে একটি সংখ্যা 'N'-এর গুণনীয়ক নির্ধারণ করুন এবং 'i' এবং 'n/i' N কে ভাগ করে কিনা তা যাচাই করুন এবং একটি ভেক্টরে সংরক্ষণ করুন।
  • এখন আমরা ভেক্টর বাছাই করি এবং প্রতিটি উপাদান প্রিন্ট করি।
  • তিনটি লুপ প্রয়োগ করে চতুর্থ সংখ্যার সাথে পণ্যটিকে সর্বাধিক করতে তিনটি সংখ্যা নির্ধারণ করুন৷
  • অবশেষে আমরা পরবর্তী সর্বোচ্চ পণ্যটিকে পূর্ববর্তী পণ্যের সাথে প্রতিস্থাপন করি।
  • যখন আপনি চারটি বিষয় খুঁজে পাবেন তখন পণ্যটি প্রিন্ট করুন।

উদাহরণ

// C++ program to find four factors of N
// with maximum product and sum equal to N
#include <bits/stdc++.h>
using namespace std;
// Shows function to find factors
// and to print those four factors
void findfactors2(int n1){
   vector<int> vec2;
   // Now inserting all the factors in a vector s
   for (int i = 1; i * i <= n1; i++) {
      if (n1 % i == 0) {
         vec2.push_back(i);
         vec2.push_back(n1 / i);
      }
   }
   // Used to sort the vector
   sort(vec2.begin(), vec2.end());
   // Used to print all the factors
   cout << "All the factors are -> ";
   for (int i = 0; i < vec2.size(); i++)
      cout << vec2[i] << " ";
      cout << endl;
      // Now any elements is divisible by 1
      int maxProduct2 = 1;
      bool flag2 = 1;
      // implementing three loop we'll find
      // the three maximum factors
      for (int i = 0; i < vec2.size(); i++) {
         for (int j = i; j < vec2.size(); j++) {
            for (int k = j; k < vec2.size(); k++) {
               // Now storing the fourth factor in y
               int y = n1 - vec2[i] - vec2[j] - vec2[k];
            // It has been seen that if the fouth factor become negative
            // then break
            if (y <= 0)
               break;
            // Now we will replace more optimum number
            // than the previous one
            if (n1 % y == 0) {
               flag2 = 0;
               maxProduct2 = max(vec2[i] * vec2[j] * vec2[k] *y,maxProduct2);
            }
         }
      }
   }
   // Used to print the product if the numbers exist
   if (flag2 == 0)
     cout << "Product is -> " << maxProduct2 << endl;
   else
      cout << "Not possible" << endl;
}
// Driver code
int main(){
   int n1;
   n1 = 80;
   findfactors2(n1);
   return 0;
}

আউটপুট

All the factors are -> 1 2 4 5 8 10 16 20 40 80
Product is -> 160000

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

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

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

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