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