Giả sử chúng ta phải tìm palindrome nguyên tố nhỏ nhất lớn hơn hoặc bằng N. Vì vậy, nếu N là 13, thì palindrome nhỏ nhất sẽ là 101.
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
-
Nếu N nằm trong khoảng 8 đến 11, thì trả về 11
-
cho tôi trong phạm vi từ 1 đến 99999
-
s:=i dưới dạng một chuỗi
-
r:=s
-
đảo ngược r
-
num:=nối s và chuỗi con của r từ chỉ mục 1, sau đó chuyển đổi thành số
-
nếu num> =N và num là số nguyên tố, thì trả về num
-
-
trả về 0
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
Ví dụ
#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)); }
Đầu vào
105
Đầu ra
131