迴文素數

 

求出大於或等於 N 的最小回文素數。java

回顧一下,若是一個數大於 1,且其因數只有 1 和它自身,那麼這個數是素數spa

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

回顧一下,若是一個數從左往右讀與從右往左讀是同樣的,那麼這個數是迴文數。blog

例如,12321 是迴文數。io

 

示例 1:class

輸入:6
輸出:7

示例 2:import

輸入:8
輸出:11

示例 3:im

輸入:13
輸出:101

 

提示:next

  • 1 <= N <= 10^8
  • 答案確定存在,且小於 2 * 10^8
 1 import java.util.Scanner;
 2 
 3 class Solution2 {
 4 
 5     public boolean isPrime(int number) {
 6         for (int i = 2; i <= Math.sqrt(number); i++) {
 7             if (number % i == 0) {
 8                 return false;
 9             }
10         }
11         return true;
12     }
13 
14     public boolean isPalindrome(int[] number, int len) {
15         for (int j = 0; j < len / 2; j++)
16             if (number[j] != number[len - j - 1]) return false;
17         return true;
18     }
19 
20     public int primePalindrome(int number) {
21         if (number <= 2) return 2;
22         number = number % 2 == 0 ? number + 1 : number;
23         for (int i = number; ; ) {
24             int k = i, len = 0;
25             int[] nums = new int[10];
26             while (k / 10 != 0) {
27                 nums[len++] = k % 10;
28                 k /= 10;
29             }
30             nums[len++] = k;
31             if (len % 2 == 0 && i != 11)
32                 i = (int) Math.pow(10, len) + 1;
33             else {
34                 if (isPalindrome(nums, len))
35                     if (isPrime(i)) return i;
36                 i += 2;
37             }
38         }
39 
40     }
41 }
42 
43 public class PrimePalindrome {
44     public static void main(String[] args) {
45         Scanner scan = new Scanner(System.in);
46         int read = scan.nextInt();
47         Solution2 sol = new Solution2();
48         System.out.println(sol.primePalindrome(read));
49     }
50 }
相關文章
相關標籤/搜索