इस समस्या में, हमें एक तत्व N दिया जाता है। हमें अगला पैलिंड्रोम प्राइम ढूंढना होगा।
समस्या का विवरण - हमें सबसे छोटी अभाज्य संख्या ज्ञात करनी होगी जो कि एक पैलिंड्रोम संख्या भी हो, जो N से बड़ी हो।
पैलिंड्रोम संख्या एक संख्या है जिसमें दोनों दिशाओं में संख्याएं समान होती हैं।
अभाज्य संख्या एक संख्या है यदि इसके केवल गुणनखंड 1 और स्वयं हैं।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
इनपुट
N = 12
आउटपुट
101
स्पष्टीकरण
12 से बड़े पैलिंड्रोम की श्रृंखला 22, 33, 44, 55, 66, 77, 88, 99,101… इनमें से सबसे छोटा पैलिंड्रोम 101 है।
समाधान दृष्टिकोण
समस्या का एक सरल समाधान एन से बड़े सभी पैलिंड्रोम को खोजना है जो कि अभाज्य हैं।
एक अधिक कुशल समाधान है, सम अंक वाले पैलिंड्रोम का पता लगाना जो 11 का गुणक है।
यहाँ इस समाधान का प्रमाण दिया गया है,
11% 11 = 0 1111% 11 = 0
इसका उपयोग करके हम सम अंकों के साथ पैलिंड्रोम पाएंगे -
xyzzyx % 11 =0, जो सभी सम संख्या अंकों को पैलिंड्रोम नहीं बनाता है।
हमारे समाधान की कार्यप्रणाली को दर्शाने वाला कार्यक्रम,
उदाहरण
#include <iostream> #include <string> using namespace std; bool isPrime(int num) { if (num < 2 || num % 2 == 0) return num == 2; for (int i = 3; i * i <= num; i += 2) if (num % i == 0) return false; return true; } int primePalindrome(int N) { if (8 <= N && N <= 11) return 11; for (int x = 1; x < 100000; ++x) { string s = to_string(x), r(s.rbegin(), s.rend()); int y = stoi(s + r.substr(1)); if (y >= N && isPrime(y)) return y; } return -1; } int main() { int N = 432; cout<<"The next prime palindrome is "<<findNextPrimePallindrome(432); return 0; }
आउटपुट
The next number with same set of digits is 92543