一、实验(训)目的
1、理解筛选法求解素数的原理。
2、理解列表切片操作。
3、熟练运用内置函数enumerate()。
4、熟练运用内置函数filer()。
5、理解序列解包工作原理。
6、初步了解选择结构和循环结构。
二、实验(训)内容
题目:编写程序,输入一个大于2 的自然数,然后输出小于该数字的所有素数组成的列表。
三、实验(训)结果
-
实验代码
maxNumber = int(input('请输入一个大于 2 的自然数:'))
lst = list(range(2, maxNumber))
# 最大整数的平方根
m = int(maxNumber**0.5)
for index, value in enumerate(lst):
# 如果当前数字已大于最大整数的平方根,结束判断
if value > m:
break
# 对该位置之后的元素进行过滤,去除能被当前value整除的元素
lst[index+1:] = list(filter(lambda x: x % value != 0, lst[index+1:]))
print(lst)
-
结果图片
-
结果分析
通过用户输入一个大于2的自然数,并应用埃拉托斯特尼筛法的变种算法,程序成功筛选出并打印出所有小于该输入数的质数,这些质数以升序排列,确保了每个输出数字都是能被1和其自身整除的整数。