কম্পিউটার

C++ এ পরবর্তী প্যালিনড্রোম প্রাইম খুঁজুন


এই সমস্যায়, আমাদের একটি উপাদান 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

  1. C++ এ একটি প্রাইম মোডের অধীনে পাওয়ারের শক্তি খুঁজুন

  2. C++ এ পরবর্তী স্পারস নম্বর খুঁজুন

  3. C++ এ একটি অ্যারেতে পরবর্তী বৃহত্তরের পরবর্তী ছোট খুঁজুন

  4. C++ এ প্রদত্ত কী-এর পরবর্তী ডানদিকের নোড খুঁজুন