इस समस्या में, हमें एक नंबर N दिया जाता है। हमारा काम केवल अभाज्य अंकों (2, 3, 5 और 7) से बनी n-th संख्या को खोजना है। ।
केवल अभाज्य अंकों (2, 3, 5, 7) से मिलकर बनी श्रृंखला है, 2, 3, 5, 7, 22, 23, 25, 27, 32, 33...
समस्या को समझने के लिए एक उदाहरण लेते हैं,
Input: N = 6 Output: 23
समाधान दृष्टिकोण
समस्या को हल करने का एक सरल तरीका यह है कि दिए गए सूचकांक में संख्या ज्ञात की जाए अर्थात श्रृंखला का पद ज्ञात किया जाए, इसके लिए हम श्रृंखला का अवलोकन करेंगे।
हमारे पास चार अलग-अलग अभाज्य संख्याएँ हैं इसलिए बनाई गई श्रृंखला को चार अंकों की संख्या प्रणाली के रूप में माना जा सकता है। इस संख्या प्रणाली में, हमारे पास लंबाई x की 4x संख्याएं हैं।
अब इस समस्या को हल करने के लिए, हमारे पास वह श्रंखला है जिसमें हम o संख्याएँ ज्ञात करेंगे जिनसे वे संख्याएँ बनाते हैं। फिर हम Nth नंबर गिनेंगे और जरूरी नंबर प्रिंट करेंगे।
लंबाई का उपयोग करके Nth संख्या ज्ञात करने के लिए हम लंबाई की पहली संख्या (x-1) से गिनेंगे और फिर इस N को गिनेंगे।
उदाहरण
हमारे समाधान की कार्यप्रणाली को दर्शाने के लिए कार्यक्रम
#include <iostream> #include <math.h> using namespace std; void findNthNumber(int n){ long x = 1; long lastNum = 0; while (true) { long currNum = lastNum + pow(4, x); if (lastNum < n && currNum >= n) break; x++; lastNum = currNum; } for (int i = 1; i <= x; i++) { for (long j = 1; j <= 4; j++) { if (lastNum + pow(4, x - i) < n) lastNum += pow(4, x - i); else { if (j == 1) cout<<"2"; else if (j == 2) cout<<"3"; else if (j == 3) cout<<"5"; else if (j == 4) cout<<"7"; break; } } } } int main(){ int N = 32; cout<<N<<"th number made of prime digits is "; findNthNumber(N); return 0; }
आउटपुट
32th number made of prime digits is 257