问题描述
如果一个正整数只有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列表中,则为纯质数。
这样的

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

被折叠的 条评论
为什么被折叠?



