• 【python_PAT_乙类】1013_数素数 ,Python运行超时解决方案


    题目:

    令 P​i​​ 表示第 i 个素数。现任给两个正整数 M≤N≤10​4​​,请输出 P​M​​ 到 P​N​​ 的所有素数。
    
    输入格式:
    输入在一行中给出 M 和 N,其间以空格分隔。
    输出格式:
    输出从 P​M​​ 到 P​N​​ 的所有素数,每 10 个数字占 1 行,其间以空格分隔,但行末不得有多余空格。
    
    输入样例:
    5 27 
    输出样例:
    11 13 17 19 23 29 31 37 41 43
    47 53 59 61 67 71 73 79 83 89
    97 101 103
    

      



    代码:
    思路: 判断素数的时候,除数用素数列表,个数的限制还是按照math.sqrt()
    代码:
     1 # 数素数
     2 import math
     3 
     4 
     5 def is_prime_num(test_num, prime_nums):
     6     len_num = math.sqrt(test_num)+1
     7     for k in prime_nums:
     8         if k < len_num:
     9             if test_num % k == 0:
    10                 return False
    11         else:
    12             break
    13     return True
    14 
    15 
    16 list_num = list(map(int, input().split()))
    17 max_num = list_num[1]
    18 min_num = list_num[0]-1
    19 count_actual_prime_num = 1
    20 list_prime_num = []
    21 i = 3
    22 if max_num == 1:
    23     print(2)
    24 elif min_num+1 == 1:
    25     print(2, end=' ')
    26 if max_num > 1:
    27     while count_actual_prime_num < max_num:
    28         if is_prime_num(i, list_prime_num):
    29             count_actual_prime_num += 1
    30             list_prime_num.append(i)
    31             if count_actual_prime_num > min_num:
    32                 if (count_actual_prime_num-min_num) % 10 != 0 and count_actual_prime_num != max_num:
    33                     print(i, end=' ')
    34                 else:
    35                     print(i)
    36         i += 2

    结果:

     
  • 相关阅读:
    []*T *[]T *[]*T 傻傻分不清楚
    Linux设备树
    gdb使用
    LockBit 2.0 勒索软件全球肆虐,我们该如何防范?
    记一次粗浅的钓鱼样本分析过程
    部分sql注入总结
    Linux系统取证简述
    对抗样本攻击及防御实战
    区块链是否真的安全?黑客盗取价值6亿美金数字货币
    某团购CMS的SQL注入漏洞代码审计
  • 原文地址:https://www.cnblogs.com/ninarming/p/13131085.html
Copyright © 2020-2023  润新知