蓝桥杯:纯质数

题目:

本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

如果一个正整数只有 11 和它本身两个约数,则称为一个质数(又称素数)。

前几个质数是:2,3,5,7,11,13,17,19,23,29,31,37,⋅⋅⋅2,3,5,7,11,13,17,19,23,29,31,37,⋅⋅⋅ 。

如果一个质数的所有十进制数位都是质数,我们称它为纯质数。例如:2,3,5,7,23,372,3,5,7,23,37 都是纯质数,而 11,13,17,19,29,3111,13,17,19,29,31 不是纯质数。当然 1,4,351,4,35 也不是纯质数。

请问,在 11 到 2021060520210605 中,有多少个纯质数?

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 256M

解题思路:

        由于要求每一位都是质数,而个位数的质数只有2,3,5,7,这个很重要,想到这个就可以大幅度的进行剪枝,整体过程就是遍历说有的数字然后使用函数进行判断该数字是否满足条件即可。

        判断函数:

        判断各个位置上的数字是不是质数:

# p = ['2','3','5','7']
# n为要判断的数字,即传入函数的数字
# 这里使用字符串进行判断,跟简洁

for j in str(n):
    if j not in p:
      return False

        判断整体是不是质数:

# 正常判断质数函数过程
for i in range(2,int(n ** 0.5 + 1)):
    if n % i == 0:
      return False
  return True

代码:

import os
import sys

# 请在此输入您的代码
p = ['2','3','5','7']
cnt = 6
def isrp(n):
  for j in str(n):
    if j not in p:
      return False
  for i in range(2,int(n ** 0.5 + 1)):
    if n % i == 0:
      return False
  return True
   
for i in range(39,20210606,2):
  if isrp(i):
    cnt += 1
print(cnt)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值