zoukankan      html  css  js  c++  java
  • 回文素数

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

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

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

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

    例如,12321 是回文数。

    示例 1:

    输入:6
    输出:7
    

    示例 2:

    输入:8
    输出:11
    

    示例 3:

    输入:13
    输出:101

    提示:

    • 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 }
  • 相关阅读:
    【APIO2008】免费道路[最小生成树 kruskal]
    【2019.8.13】
    【矩阵】
    [POI2008]BLO-Blockade [tarjan 割点]
    poj1458 最长公共子序列 (动态规划)
    最长上升子序列
    poj1163 数字三角形 (动态规划)
    快速幂 (分治)
    求排列的逆序数(分治)
    快速排序 (分治)
  • 原文地址:https://www.cnblogs.com/sigmod3/p/9534407.html
Copyright © 2011-2022 走看看