Python实现纯质数的筛选(第十二届蓝桥杯纯质数)

编程入门 行业动态 更新时间:2024-10-23 08:28:46

Python实现纯<a href=https://www.elefans.com/category/jswz/34/1764968.html style=质数的筛选(第十二届蓝桥杯纯质数)"/>

Python实现纯质数的筛选(第十二届蓝桥杯纯质数)

上Python课的时候老师说能用Python解决蓝桥杯上的一些问题,然后就尝试了一下用Python解决蓝桥杯国赛中纯质数这道题,在网上看有些大神用java实现,但是找了好久也没有人用Python写的,最终决定自己弄弄,理解了一些解题的思路,发现用Python实现起来相对来说还是比较容易的。

题目要求:

如果一个正整数只有 1 和它本身两个约数,则称为一个质数(又称素数)。前几个质数是: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, · · · 。如果一个质数的所有十进制数位都是质数,我们称它为纯质数。例如: 2,3, 5, 7, 23, 37 都是纯质数,而 11, 13, 17, 19, 29, 31 不是纯质数。当然 1, 4, 35也不是纯质数。请问,在 1 到 20210605 中,有多少个纯质数?

解题思路:

先筛选出所有素数,再筛选出纯素数。定义两个函数分别实现该功能。筛选纯素数用的特殊处理,即若该数是由2,3,5,7组成,则为纯素数,否则不是。没有用题目中给出来的定义。

实现代码:

def prime(n):if n%2 == 0:return n==2if n%3 == 0:return n==3if n%5 == 0:return n==5m = int(n ** 0.5 + 1)for p in range(7,m,2):    #只考虑奇数作为可能因子if n%p == 0:return 0return 1
#判断是否为纯素数:该数只由2,3,5,7这几个数字组成,则为纯素数
def isPure(lst):for i in lst:if i == '0':return False;if i == '1':return False;if i == '4':return False;if i == '6':return False;if i == '8':return False;if i == '9':return False;return Truen = int(input())
#lst列表存n以内的所有素数
lst = []
for i in range(2,n+1): #1不是素数,从2开始if prime(i):lst.append(i)
#lst2列表存lst列表中的所有纯素数
lst2 = []
for i in range(len(lst)):m = list(str(lst[i]))if isPure(m) == True:lst2.append(lst[i])
print(lst2)
print(len(lst2))

输入输出:

输入任意大的一个自然数,输出小于该自然数所有纯质数组成的列表,以及列表长度。

样例如下:

最后

感觉自己筛选纯素数的方法不常规,也不知道对不对,就是自己观察出来的,然后与常规方法的结果进行了对比。。还有,素数就是质数!!!本人实在菜的抠jio,希望大神能给指点一下吧

然后,通过对Java和Python均有了一些了解后,发现Python确实值得一学,学校里老师讲的应该还不错但不知为啥就是听不进去。。看看以后有时间能不能自己深入学习一下吧

此代码可以用来应付作业哈哈哈

不早了,写完睡觉,晚安!

更多推荐

Python实现纯质数的筛选(第十二届蓝桥杯纯质数)

本文发布于:2024-02-06 16:36:15,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1750180.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:质数   十二届   Python   蓝桥杯纯

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!