超级质数蓝桥杯真题python解法

文章介绍了一种超级质数的概念,即满足自身为质数、每一位也是质数以及相邻k位构成的数也是质数的数字。文章通过编写两个Python函数,分别判断前两个条件和第三个条件,然后在一定范围内查找满足条件的最大超级质数。
摘要由CSDN通过智能技术生成

题目描述

解题思路 

根据题意超级质数要满足三个条件

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位是否为质数的函数时,就是构建双层循环依次遍历,注意边切片边界以及循环即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值