इस समस्या में, हमें एक पूर्णांक N <=10^18 दिया जाता है। हमारा काम संख्या के सभी अभाज्य गुणनखंडों को घटना की आवृत्ति के साथ प्रिंट करना है।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
Input: 100 Output: 2 2 5 2 Explanation: prime factorization of 100 = 2 * 2 * 5 * 5.
इस समस्या को हल करने के लिए, हमें संख्या के अभाज्य गुणनखंडों को खोजना होगा और फिर उनकी आवृत्तियों की गणना करनी होगी।
इसके लिए हम 2 की बारंबारता को गुणनखंड के रूप में जांचेंगे और संख्या को 2 से विभाजित करेंगे। फिर 3 से वर्गमूल n तक चेक करें। विभाजित करें और प्रत्येक अभाज्य संख्या की आवृत्ति बढ़ाएं जो संख्या का एक कारक है। और अगर संख्या 1 हो जाए तो रुक जाएं। फिर सभी अभाज्य संख्याओं को आवृत्तियों के साथ प्रिंट करें।
नीचे दिया गया कोड हमारे समाधान के कार्यान्वयन को दर्शाता है,
उदाहरण
#include <iostream> #include <math.h> using namespace std; void factorize(long long n){ int count = 0; while (!(n % 2)) { n/= 2; count++; } if (count) cout<<2<<"\t"<<count<<endl; for (long long i = 3; i <= sqrt(n); i += 2) { count = 0; while (n % i == 0) { count++; n = n / i; } if (count) cout<<i<<"\t"<<count<<endl; } if (n > 2) cout<<n<<"\t"<<1<<endl; } int main() { long long N = 21000; cout<<"The prime factors and their frequencies of the number "<<N<<" are \n"; factorize(N); return 0; }
आउटपुट
The prime factors and their frequencies of the number 21000 are 2 3 3 1 5 3 7 1. हैं