编写程序:输入一个正整数n,使用筛选法求解小于n的所有素数,输出包含这些素数的列表
时间: 2023-11-28 16:50:43 浏览: 208
使用while循环设计一个程序,用户在文本框中输入一个整数n,单击“筛选素数”按钮,程序将找出3~n的所有素数并在列表框中输出。
5星 · 资源好评率100%
以下是Python的代码实现:
```python
def sieve(n):
# 初始化一个长度为n的列表,全部赋值为True
primes = [True] * n
primes[0] = primes[1] = False # 0和1都不是素数
# 从2开始筛选
for i in range(2, int(n ** 0.5) + 1):
if primes[i]:
# 将i的倍数标记为非素数
for j in range(i * i, n, i):
primes[j] = False
# 将所有标记为素数的下标输出
return [i for i in range(n) if primes[i]]
# 测试
n = int(input("请输入一个正整数n:"))
primes = sieve(n)
print(f"小于{n}的素数有:{primes}")
```
该程序中使用了筛选法(Sieve of Eratosthenes)来求解小于n的所有素数。具体实现过程如下:
1. 初始化一个长度为n的列表,用来保存每个数字是否为素数,全部赋值为True。
2. 从2开始循环到n的平方根(int(n ** 0.5) + 1),如果当前数字是素数,就将它的倍数(除自己外)标记为非素数(即将对应下标的列表元素赋值为False)。
3. 循环结束后,所有标记为素数的下标即为小于n的所有素数,将它们输出即可。
例如,当输入n=20时,程序输出的结果为:
```
小于20的素数有:[2, 3, 5, 7, 11, 13, 17, 19]
```
阅读全文