ধরুন আমাদের ক্ষুদ্রতম প্রাইম প্যালিনড্রোমটি খুঁজে বের করতে হবে যা N এর চেয়ে বড় বা সমান। তাই যদি N 13 হয়, তাহলে ক্ষুদ্রতম প্যালিনড্রোম হবে 101।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
যদি N এর পরিসর 8 থেকে 11 হয়, তাহলে 11 ফেরত দিন
-
আমি 1 থেকে 99999 রেঞ্জের মধ্যে
-
s :=i একটি স্ট্রিং হিসাবে
-
r :=s
-
বিপরীত r
-
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