使用列表实现筛选法求素数
实验目的
- 了解素数的定义
- 理解筛选法求解素数的原理
- 理解切片操作
- 熟练运行内置函数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]