【python】第十二届蓝桥杯python组国赛——纯质数

博客讲述了如何优化算法来高效计算1到20210605之间的纯质数数量。原始算法由于遍历所有可能的乘积而导致计算时间过长,作者提出了利用6的倍数性质优化质数判断,从而大大减少了计算时间。通过新算法,只需要十几秒就能得出纯质数的数量为1903。

问题描述
如果一个正整数只有1和它本身两个约数,则称为一个质数(又称素数)。
前几个质数是:2,3,5,7,11,13……
如果一个质数的所有十进制数位都是质数,我们称它为纯质数。例如:2,3,5,7,23,37都输纯质数,而11,13,17,19,29,31不是纯质数。当然1,4,35也不是纯质数。
请问,在1到20210605中,有多少个纯质数?
答案提交
这是一道结果填空题,你只需要算出结果好提交即可。本体的结果为一个证书,在提交答案时只填写这个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

这里就涉及到质数的算法问题了!
如果这里使用了普通的质数算法问题,就会出现跟我一样的事:算了一个晚上才算出来。

我的算法:

lists = []
for i in range(2, 20210606):
    for j in range(2, 20210606):
        if i * j <= 20210606:
            lists.append(i * j)
        else:
            break

我的思路:

    先把1-20210606中的非质数计算出来,存放到lists中,然后每拿到一个通过了各个位均为质数的算法的数都进行对比,如果这个数没有在lists列表中,则为纯质数。

    这样的

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值