Computer >> Máy Tính >  >> Lập trình >> C ++

Palindrome nguyên tố trong C ++

Giả sử chúng ta phải tìm palindrome nguyên tố nhỏ nhất lớn hơn hoặc bằng N. Vì vậy, nếu N là 13, thì palindrome nhỏ nhất sẽ là 101.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • Nếu N nằm trong khoảng 8 đến 11, thì trả về 11

  • cho tôi trong phạm vi từ 1 đến 99999

    • s:=i dưới dạng một chuỗi

    • r:=s

    • đảo ngược r

    • num:=nối s và chuỗi con của r từ chỉ mục 1, sau đó chuyển đổi thành số

    • nếu num> =N và num là số nguyên tố, thì trả về num

  • trả về 0

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

Ví dụ

#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));
}

Đầu vào

105

Đầu ra

131