使用集合实现筛选法求素数实验
题目:
输入一个大于 2 的自然数,输出小于该数字的所有素数组成的集合。
实现步骤:
- 首先,创建一个包含所有自然数(从2到您输入的自然数)的集合,称为
numbers
集合。 - 创建一个空的集合,用于存储素数,称为
prime_numbers
集合。 - 从2开始,遍历
numbers
集合中的每个数字:- 如果当前数字是素数,则将它添加到
prime_numbers
集合中。 - 然后,从
numbers
集合中删除当前素数的所有倍数,因为它们不可能是素数。
- 如果当前数字是素数,则将它添加到
- 重复步骤3,直到遍历完
numbers
集合中的所有数字。 - 最后,
prime_numbers
集合将包含小于您输入的自然数的所有素数。
参考代码:
python
# 输入一个大于2的自然数
n = int(input("请输入一个大于2的自然数:"))
if n <= 2:
print("请输入大于2的自然数。")
else:
# 创建一个包含所有自然数的集合
numbers = set(range(2, n + 1))
prime_numbers = set()
while numbers:
current = min(numbers)
prime_numbers.add(current)
numbers -= set(range(current, n + 1, current))
print("小于", n, "的所有素数组成的集合:", prime_numbers)
代码解释:
-
我们设定输入数字
n
为 10。 -
我们创建一个包含所有自然数的集合
numbers
,从2到10,即{2, 3, 4, 5, 6, 7, 8, 9, 10}
。 -
我们创建一个空集合
prime_numbers
,用于存储素数。 -
进入循环,首先选取
current
为numbers
集合中的最小数字,即 2。 -
我们将 2 添加到
prime_numbers
集合中,并从numbers
集合中删除2的所有倍数。此时,prime_numbers
变成{2}
,numbers
变成{3, 5, 7, 9}
。 -
重复这个过程,下一个最小数字是3,将其添加到
prime_numbers
集合中,并删除3的倍数。此时,prime_numbers
变成{2, 3}
,numbers
变成{5, 7}
。 -
继续这个过程,一直到
numbers
集合为空。 -
最后,程序将输出小于10的所有素数组成的集合:
{2, 3, 5, 7}
。