একটি সংখ্যা N দেওয়া থাকলে, N চেয়ে বড় সবচেয়ে ছোট প্রাইম প্যালিনড্রোম সংখ্যা বের করতে হবে।
উদাহরণ
ইনপুট: N = 10 → আউটপুট: 11
ইনপুট: N = 15 → আউটপুট: 17
অ্যালগরিদম
Nইনিশিয়ালাইজ করুন।isPrime()ফাংশন লিখুন (√n পর্যন্ত চেক)।isPalindrome()ফাংশন লিখুন (রিভার্স করে মিলান)।N+1থেকে শুরু করে লুপ চালান।- প্রথম প্রাইম প্যালিনড্রোম পাওয়া গেলে ফেরত দিন।
সি++ ইমপ্লিমেন্টেশন
#include <bits/stdc++.h>
using namespace std;
bool isPrime(int n) {
if (n < 2) return false;
for (int i = 2; i * i <= n; i++) if (n % i == 0) return false;
return true;
}
bool isPalindrome(int n) {
int rev = 0, orig = n;
while (n) { rev = rev * 10 + n % 10; n /= 10; }
return orig == rev;
}
int getNextPrimePalindrome(int n) {
for (int i = n + 1; ; i++) {
if (isPrime(i) && isPalindrome(i)) return i;
}
}
int main() {
int N = 15;
cout << getNextPrimePalindrome(N) << endl; // 17
return 0;
}
আউটপুট
17