মান লেযিয়ে N-এর চেয়ে বড় বা সমান সবচেয়ে ছোট প্রাইম প্যালিনড্রোম খুঁজে বের করতে হবে। N = 13 হলে সবচেয়ে ছোট প্যালিনড্রোম ১০১।
এটি সমাধান করার জন্য আমরা নিচের ধাপগুলো অনুসরণ করব -
যদি N ৮ থেকে ১১-এর মধ্যে থাকে, ১১ রিটার্ন করুন
i = 1 থেকে ৯৯৯৯৯ পর্যন্ত লুপ চালান
s := i স্ট্রিং হিসেবে
r := s
r রিভার্স করুন
num := s + r.substr(1) ক্যাটেনেট করে নম্বারে কনভার্ট করুন
যদি 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