前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >蓝桥杯-纯质数

蓝桥杯-纯质数

作者头像
用户10271432
发布2023-02-13 14:54:45
6340
发布2023-02-13 14:54:45
举报

没有白走的路,每一步都算数🎈🎈🎈

题目描述:

质数,也叫做素数,比如2,3,5,7,11,13,17,19等都是质数,2,3,5,7是纯质数,而11,13,17,19,23并不是纯质数,当然375也不是纯质数,因为其首先不满足是质数。所以纯质数即是质数的每个位子都是质数。

输入描述:

没有任何输入

输出描述:

输出所有的个数

算法设计:

暴力算法:

直接采用暴力算法测试,时间超过,直接打印输出结果。

期间没有考虑到一些约束条件,比如说最大值20210605,即程序的最后一个for循环输出结果偏多。

代码语言:javascript
复制
import os
import sys
import math
def prime(n):
    if n ==1:
        return 0
    for i in range(2,int(math.sqrt(n))+1):
        if n%i==0:
            return 0
    return 1
##print(prime(2))
L = [2,3,5,7]
cnt = 4
for i in [2,3,5,7]:
    for j in [2,3,5,7]:
        s = i*10+j
        if prime(s):
##            print(s)
            cnt+=1
for i in [2,3,5,7]:
    for j in [2,3,5,7]:
        for k in [2,3,5,7]:
            s = i*100+j*10+k
            if prime(s):
                cnt+=1
##                print(s)
for i in [2,3,5,7]:
    for j in [2,3,5,7]:
        for k in[2,3,5,7]:
            for l in [2,3,5,7]:
                s = i*1000+j*100+k*10+l
                if prime(s):
##                    print(s)
                    cnt+=1
for i in L:
    for j in L:
        for k in L:
            for l in L:
                for m in L:
                    s = 10000*i+j*1000+k*100+l*10+m
                    if prime(s):
                        cnt+=1
for i in L:
    for j in L:
        for k in L:
            for l in L:
                for m in L:
                    for n in L:
                        s = 100000*i+j*10000+k*1000+l*100+m*10+n
                        if prime(s):
                            cnt+=1
for i in L:
    for j in L:
        for k in L:
            for l in L:
                for m in L:
                    for n in L:
                        for o in L:
                            s = 1000000*i+j*100000+k*10000+l*1000+m*100+n*10+o
                            if prime(s):
                                cnt+=1
for i in L:
    for j in L:
        for k in L:
            for l in L:
                for m in L:
                    for n in L:
                        for o in L:
                            for p in L:
                                s = 10000000*i+j*1000000+k*100000+l*10000+m*1000+n*100+o*10+p
                                if prime(s) and s<=20210605:
                                    cnt+=1
print(cnt)

每日一句

摘自《三体》:

你的无畏来源于无知。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-02-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目描述:
  • 输入描述:
  • 输出描述:
  • 算法设计:
  • 每日一句
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档