LeetCode 866. Prime Palindrome
阅读原文时间:2023年07月08日阅读:2

866. Prime Palindrome(回文素数)

题目:

  求出大于或等于 N 的最小回文素数。

  回顾一下,如果一个数大于 1,且其因数只有 1 和它自身,那么这个数是素数

  例如,2,3,5,7,11 以及 13 是素数。

  回顾一下,如果一个数从左往右读与从右往左读是一样的,那么这个数是回文数。

  例如,12321 是回文数。

思路:

  思路还是挺清晰的,从给入数字向上检索,如果既是回文数,又是素数,就直接输出,如果不满足条件,那么就增加数字,继续判断。

  这里有一个小问题,就是所有偶数位的回文数,都可以被11整除,至于证明。。。。。咱也不知道,咱也不敢问,所有如果发现这个数是偶数位,那么直接进一位,首数字和尾数字全为1,继续判断。

代码:

 public static int primePalindrome(int N)  
 {  
     if (N <= 2)  
         return 2;  
     else if(N <= 3)  
         return 3;  
     else if(N <= 5)  
         return 5;  
     else if(N <= 7)  
         return 7;  
     else if(N <= 11)  
         return 11;

     for (int i = N; ; )  
     {  
         if(isHui(i) && isPrime(i))  
             return i;

         if((i + "").length() % 2 == 0)  
             i = (int)(Math.pow(10, (i + "").length()) + 1);  
         else  
             i++;

     }  
 }

 public static boolean isPrime(int i)  
 {  
     for (int j = 2; j <= Math.sqrt(i); j++)  
         if (i % j == 0)  
             return false;  
     return true;  
 }

 public static boolean isHui(int s)  
 {  
     String str = s+"";  
     int len = str.length();  
     for (int j = 0; j < len/2; j++)  
         if (str.charAt(j) != str.charAt(len-j-1))  
             return false;  
     return true;  
 }

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章