【Python 百练成钢】时间调整、二进制数、回文素数、字母距离


💛问题描述💛


求出大于或等于 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 的内部距离是多少?

答案提交

这是一道结果填空的题,你只

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值