866. 回文质数
题目描述
给你一个整数 n ,返回大于或等于 n 的最小
一个整数如果恰好有两个除数:1 和它本身,那么它是 质数 。注意,1 不是质数。
- 例如,
2、3、5、7、11和13都是质数。
一个整数如果从左向右读和从右向左读是相同的,那么它是 回文数 。
- 例如,
101和12321都是回文数。
测试用例保证答案总是存在,并且在 [2, 2 * 108] 范围内。
示例 1:
输入:n = 6 输出:7
示例 2:
输入:n = 8 输出:11
示例 3:
输入:n = 13 输出:101
提示:
1 <= n <= 108
解法
方法一
思考
求不小于 \(n\) 的最小回文素数。\(n\) 达 \(10^8\),从 \(n\) 起逐个判断素数在最坏情况下偏慢,但偶数位数回文必被 \(11\) 整除。
因此在 \((10^7,10^8)\) 直接跳到 \(10^8\)。其余情况递增并同时检测回文与素性,保证找到的第一个即答案。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | |