मान लीजिए हमें सबसे छोटा अभाज्य पैलिंड्रोम खोजना है जो N से बड़ा या उसके बराबर है। इसलिए यदि N 13 है, तो सबसे छोटा पैलिंड्रोम 101 होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
अगर N 8 से 11 की सीमा में है, तो 11 लौटाएं
-
मैं के लिए 1 से 99999 की सीमा में
-
s :=i एक स्ट्रिंग के रूप में
-
आर:=एस
-
रिवर्स आर
-
num :=इंडेक्स 1 से s को जोड़ना और r को सबस्ट्रिंग करना, फिर नंबर में कनवर्ट करना
-
अगर num>=N और num प्राइम है, तो num वापस करें
-
-
वापसी 0
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
#include <bits/stdc++.h> using namespace std; class Solution { public: bool isPrime(int n){ if(n % 2 == 0 && n > 2) return false; for(int i = 3; i * i <= n; i++){ if(n % i == 0) return false; } return n != 1 && n != 0; } int primePalindrome(int N) { if(8 <= N && N <= 11) return 11; for(int i = 1; i < 100000; i++){ string s = to_string(i); string r = s; reverse(r.begin(), r.end()); int num = stoi(s + r.substr(1)); if(num >= N && isPrime(num)) return num; } return 0; } }; main(){ Solution ob; cout << (ob.primePalindrome(105)); }
इनपुट
105
आउटपुट
131