首页 > 技术文章 > python使用列表实现筛选法求素数

skprimin 2021-07-11 00:18 原文

使用列表实现筛选法求素数

实验目的

  • 了解素数的定义
  • 理解筛选法求解素数的原理
  • 理解切片操作
  • 熟练运行内置函数enumerate()
  • 熟练运用内置函数filter()
  • 理解序列解包的工作原理
  • 熟悉选择结构和循环结构

实验内容

  • 编写程序,输入一个大于2的自然数,然后输出小于该数字的所有素数组成列表。
import math
'''首先是进行素数判断,使用的筛选法构造函数isPrime'''
def isPrime(n):
    m = math.ceil(math.sqrt(n)+1)
    for i in range(2, m):
        if n%i == 0 and i<n:
            return False
            break
    else:
        return True

n = input("请输入一个大于2的自然数:")
n = int(n)
'''由于0,1不是素数但能通过isPrime()函数测试
故而将范围设置为range(2,  n + 1 )以求实现[2, n]取值'''
list(filter(isPrime, [i for i in range(2, n+1)]))
请输入一个大于2的自然数:50
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]

推荐阅读