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
廣告
Data Structure
Networking
RDBMS
Operating System
Java
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP