C++ 中的素數迴文


假設我們必須找到大於或等於 N 的最小素數迴文數。因此,如果 N 是 13,那麼最小的迴文數將是 101。

為了解決這個問題,我們將按照以下步驟進行 -

  • 如果 N 在 8 到 11 之間,那麼返回 11

  • 對於 i 在 1 到 99999 之間

    • s := i 作為一個字串

    • r := s

    • 反轉 r

    • num := 連線 s 和 r 從索引 1 開始的子字串,然後轉換成數字

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

更新於:2020 年 4 月 30 日

870 次瀏覽

開啟您的 職業生涯

完成課程後獲取證書

開始吧
廣告
© . All rights reserved.