题目描述
解题思路
根据题意超级质数要满足三个条件
1.自身为质数
2.自身的每一位是质数
3.相邻k位构成的数是质数
所以设置两个函数一个判断前两个条件,一个判断第三个条件
代码
zhishu=['2','3','5','7']#10以内的质数
def judge_prime(num):
#先判断是否每一位都是质数
for i in num:
if i not in zhishu:
return 0
#再判断整个数是否为质数
n=int(num)
for i in range(2,int(n**0.5)+1):
if n%i==0:
return 0
return 1#如果没有不满足的情况最后返回1
def judge_child(num):
for i in range(0,len(num)-1):#因为切片的特性所以最多取到len(num)-2
for j in range(i+1,len(num)):
if judge_prime(num[i:j+1])==0:
return 0
return 1
for num in range(53,9999):
res1=judge_prime(str(num))
res2=judge_child(str(num))
if res1==res2==1:
maxnum=num
print(maxnum)
构建判断相邻k位是否为质数的函数时,就是构建双层循环依次遍历,注意边切片边界以及循环即可。