Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में N के चार गुणनखंड जिनका गुणनफल अधिकतम हो और योग 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++ प्रोग्राम: दो संख्याएं ढूंढें जिनका योग और गुणनफल दोनों N के समान हों

    इस ट्यूटोरियल में, हम एक प्रोग्राम पर चर्चा करेंगे जो दो संख्याएं (मान लीजिए a और b) ढूंढता है जैसे कि दोनों a + b = N और a * b = N संतुष्ट हों। a को दोनों समीकरणों से हटाने पर, हमें b और N में एक द्विघात समीकरण मिलता है यानी b² - bN + N = 0 इस समीकरण के दो मूल होंगे जो हमें a और b दोनों का मान दें

  1. - Python प्रोग्राम में N के चार गुणनखोजें जिनका अधिकतम गुणनफल और योग N के बराबर हो - सेट-2

    मान लीजिए हमारे पास एक संख्या N है, हमें N के सभी गुणनखोजने हैं और N के चार गुणनखोजने का गुणनफल वापस करना है जैसे कि: चार गुणनखोजने का योग N के समान है। चार गुणनखोजने का गुणनफल अधिकतम है। उत्पाद को अधिकतम करने के लिए सभी चार गुणनखोजने एक-दूसरे के बराबर हो सकते हैं। 1 2 3 4 5 6 10 12 15 20 30 60 और

  1. - Python में N के चार गुणनखोजें जिनका अधिकतम गुणनफल और योग N के बराबर हो - सेट-2

    मान लीजिए हमारे पास एक संख्या N है; हमें N के गुणनखोजने हैं और N के केवल चार गुणनखोजने का गुणनफल वापस करना है जैसे कि - चार गुणनखोजने का योग N के समान है। चार गुणनखोजने का गुणनफल अधिकतम है। उत्पाद को अधिकतम करने के लिए सभी चार गुणनखोजने एक-दूसरे के बराबर हो सकते हैं। तो, यदि इनपुट N = 60 की तरह है