কম্পিউটার

C++ এ প্রাইম প্যালিনড্রোম


ধরুন আমাদের ক্ষুদ্রতম প্রাইম প্যালিনড্রোমটি খুঁজে বের করতে হবে যা 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

  1. C++ এ প্রাইম স্ট্রিং

  2. C++ এ প্রাইম ট্রিপলেট

  3. C++ এ প্যালিনড্রোম পার্টিশনিং

  4. C++ এ ব্যালেন্সড প্রাইম