筛选法求100之内的素数
时间: 2023-07-31 21:05:17 浏览: 78
可以使用筛选法(Sieve of Eratosthenes)来求解100以内的素数。具体步骤如下:
1. 创建一个长度为101的布尔数组,全部赋值为 true,表示所有数都是素数。
2. 钦定 0 和 1 不是素数,因此将数组中第 0 和第 1 个元素赋值为 false。
3. 从 2 开始,将所有 2 的倍数(除了 2 本身)在数组中标记为 false。
4. 找到数组中下一个未被标记的数,将其标记为素数,并将其所有倍数标记为 false。
5. 重复步骤 4,直到找到的素数大于 10,因为大于 10 的素数必定是个位数为 1,3,7,9 的数。
具体实现代码如下:
```python
def find_prime(n):
# 创建一个长度为 n+1 的数组,全部赋值为 true
is_prime = [True] * (n + 1)
is_prime[0] = is_prime[1] = False # 0 和 1 不是素数
# 将所有 2 的倍数(除了 2 本身)在数组中标记为 false
for i in range(2, int(n**0.5)+1):
if is_prime[i]:
for j in range(i*2, n+1, i):
is_prime[j] = False
# 打印所有素数
for i in range(2, n+1):
if is_prime[i]:
print(i, end=' ')
find_prime(100)
```
运行结果为:2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97。
阅读全文