求出大于或等于 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
使用Python实现这个的话属实有点吃力,在这给大家扩展一下思维,题目问的是1-2亿之间的素数回文数
既要满足两个条件,在数值很大的时候回文数是比较稀少的,所以我们可以先进行筛选,将1-2亿内的素数回文数直接筛出来,本题中使用的是埃氏筛,也就是注释的部分。全找出来可能需要几秒,我们不担心,将所有符合条件的数据打进表之后,直接将表复制进你要提交的程序,然后遍历就好。1-2亿内才有2千多个符合条件的数据。
由于这个表比较长,在这里就不直接粘进代码了。
from math import sqrt
打表(这些操作不要出现在所提交的程序内)
def F(n):
return str(n)==str(n)[::-1]
# 打表法
ansls=[]
templs=[]
ans=[True]int(21e8+1)
ans[0]=False
ans[1]=False
for i in range(2,int(sqrt(2*1e8))+1):
if ans[i]:
for j in range(ii,int(21e8)+1,i):
ans[j]=False
for i in range(int(2*1e8)):
if ans[i]==True:
templs.append(i)
for i in templs:
if F(i):
ansls.append(i)
print(len(ansls))
print(ansls)
将上面得到的结果ansls中的数据直接复制过来。
ansls=[…]
n=int(input())
for i in ansls:
if i>=n:
print(i)
break
==========================================================================
问题描述
两个字母之间的距离定义为它们在字母表中位置的距离。例如 A 和 C 的距离为 2,L 和 Q 的距离为 5。
对于一个字符串,我们称字符串中两两字符之间的距离之和为字符串的内部距离。
例如:ZOO 的内部距离为 22,其中 Z 和 O 的距离为 11。
请问,LANQIAO 的内部距离是多少?
答案提交
这是一道结果填空的题,你只