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