इस समस्या में, हमें एक नंबर N दिया जाता है। हमारा काम संख्या के सभी अभाज्य बिंदुओं को प्रिंट करना है अन्यथा यदि कोई अभाज्य बिंदु नहीं है तो -1 प्रिंट करें।
प्रमुख बिंदु वे सूचकांक मान हैं जो संख्या को दो अभाज्य संख्याओं में विभाजित करते हैं, एक बाईं ओर और दूसरी दाईं ओर।
आइए समस्या को समझने के लिए एक उदाहरण लेते हैं
Input: 2359 Output: 1
स्पष्टीकरण :इंडेक्स 1 पर संख्या को विभाजित करने पर हमें 2 और 59 दो अभाज्य संख्याओं के रूप में प्राप्त होंगे।
इस समस्या को हल करने के लिए, हम जांच करेंगे कि संख्या के लिए बाएं-दाएं विभाजन संभव हैं या नहीं। यदि यह मान्य है, तो हम उन सभी संख्याओं के संयोजन का प्रयास करेंगे जो उत्पन्न हो सकते हैं और जांचेंगे कि वे अभाज्य हैं या नहीं। अगर वे प्राइम हैं, तो इंडेक्स प्रिंट करें।
नीचे दिया गया कोड हमारे समाधान के कार्यान्वयन को दर्शाता है
उदाहरण
#include <bits/stdc++.h> using namespace std; int countDigits(int n) { int count = 0; while (n > 0){ count++; n = n/10; } return count; } int checkPrime(int n) { if (n <= 1) return -1; if (n <= 3) return 0; if (n%2 == 0 || n%3 == 0) return -1; for (int i=5; i*i<=n; i=i+6) if (n%i == 0 || n%(i+2) == 0) return -1; return 0; } void primePoints(int n) { int count = countDigits(n); if (count==1 || count==2){ cout << "-1"; return; } bool found = false; for (int i=1; i<(count-1); i++){ int left = n / ((int)pow(10,count-i)); int right = n % ((int)pow(10,count-i-1)); if (checkPrime(left) == 0 && checkPrime(right) == 0){ cout<<i<<"\t"; found = true; } } if (found == false) cout << "-1"; } int main() { int N = 2359; cout<<"All prime divisions of number "<<N<<" are :\n"; primePoints(N); return 0; }
आउटपुट
All prime divisions of number 2359 are : 1