class Solution {
public static boolean judge(int n){
if(n<=1){
return false;
}
char[] arr=Integer.toString(n).toCharArray();
int len=arr.length;
if(n>11&&len%2==0){
return false;
}
// 判断是否回文
for(int i=0;i<len/2;i++){
if(arr[i]!=arr[len-1-i]){
return false;
}
}
//判断是否素数---a=x*y的话,x或y必有一个大于等于平方根,另一个小于等于平方根;
for(int i=2;i<=Math.sqrt(n);i++){
if(n%i==0){
return false;
}
}
return true;
}
public int primePalindrome(int N) {
for(int n=N;true;n++){
int len= (n+"").length();
// 偶数长度的对称数一定会被11整除,直接长度加1,从下个10...01开始
if(n>11&&len%2==0){
n=(int)Math.pow(10,len);
continue;
}
if(judge(n)){
return n;
}
}
}
}
大于N的最小回文素数
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 思路 这是一个数学结论——孪生素数。 证明 因为n>5,所以必有6k+1和6k-1。这个结论叫做孪生素数。于是n+...