मान लें हमारे पास एक संख्या N है। हमारे पास एक अन्य संख्या k है। हमें जांचना है कि संख्या को k संख्याओं का उपयोग करके दर्शाया जा सकता है या नहीं। मान लें संख्या 54 है, और k = 3, तो यह [2, 3, 9] जैसी संख्याएं प्रिंट करेगा, यदि इसे दर्शाया नहीं जा सकता, तो वह प्रिंट करें।
इसे हल करने के लिए, हम N के सभी अभाज्य गुणनखंड ज्ञात करेंगे, और उन्हें एक वेक्टर में स्टोर करेंगे, फिर 1 से बड़ी k संख्याएं खोजने के लिए, हम वेक्टर के आकार की जांच करेंगे कि यह k से बड़ा है या नहीं। यदि आकार k से कम है, तो -1 लौटाएं, अन्यथा पहले k-1 गुणनखंड प्रिंट करें और अंतिम गुणनखंड शेष सभी संख्याओं का गुणनफल होगा।
उदाहरण
#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
int getKFactors(int n, int k) {
int i;
vector vec;
while (n % 2 == 0) {
vec.push_back(2);
n = n / 2; // n को 2 से विभाजित करके कम करें
}
for (i = 3; i <= sqrt(n); i = i + 2) { // i 2 से बढ़ेगा, केवल विषम संख्याएं प्राप्त करने के लिए
while (n % i == 0) {
n = n / i;
vec.push_back(i);
}
}
if (n > 2) {
vec.push_back(n);
}
if (vec.size() < k) {
cout << "Cannot be represented";
return -1;
}
for (int i = 0; i < k - 1; i++)
cout << vec[i] << ", ";
int prod = 1;
for (int i = k - 1; i < vec.size(); i++)
prod = prod * vec[i];
cout << prod << endl;
}
int main() {
int n = 54, k = 3;
getKFactors(n, k);
}
आउटपुट
2, 3, 9