ধরুন আমাদের একটি সংখ্যা 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<int> vec; while(n % 2 == 0){ vec.push_back(2); n = n/2; //reduce n by dividing this by 2 } for(i = 3; i <= sqrt(n); i=i+2){ //i will increase by 2, to get only odd numbers 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