C ++中的主要回文

假设我们必须找到最小的原始回文大于或等于N。因此,如果N为13,则最小回文将为101。

为了解决这个问题,我们将遵循以下步骤-

  • 如果N在8到11的范围内,则返回11

  • 适用于范围1至99999的i

    • s:= i作为字符串

    • r:= s

    • 反向r

    • num:=从索引1连接s和r的子字符串,然后转换为number

    • 如果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