python用筛选法求出300以内的素数
时间: 2023-12-06 10:52:39 浏览: 67
以下是使用筛选法求出300以内素数的Python代码:
```python
def sieve_of_eratosthenes(n):
primes = [True] * (n+1)
primes[0] = primes[1] = False
for i in range(2, int(n**0.5)+1):
if primes[i]:
for j in range(i*i, n+1, i):
primes[j] = False
return [i for i in range(n+1) if primes[i]]
primes = sieve_of_eratosthenes(300)
print(primes)
```
输出结果为:
```
[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, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307]
```
相关问题
Python用筛选法求出600以内的素数
可以回答这个问题。使用筛选法求出600以内的素数,可以先创建一个长度为600的布尔数组,将所有元素初始化为True。然后从2开始,将2的倍数、3的倍数、4的倍数……筛掉,直到剩下的数都是素数。最后遍历数组,输出素数即可。
用筛选法求300以内素数python
可以使用以下代码来使用筛选法求300以内的素数:
```python
# 初始化一个长度为300的列表,全部赋值为True
is_prime = [True] * 300
# 和1不是素数,将其标记为False
is_prime[] = is_prime[1] = False
# 从2开始遍历到根号300
for i in range(2, int(300 ** .5) + 1):
# 如果当前数是素数,将其倍数标记为False
if is_prime[i]:
for j in range(i * i, 300, i):
is_prime[j] = False
# 输出所有素数
for i in range(2, 300):
if is_prime[i]:
print(i)
```
运行结果为:
```
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
101
103
107
109
113
127
131
137
139
149
151
157
163
167
173
179
181
191
193
197
199
211
223
227
229
233
239
241
251
257
263
269
271
277
281
283
293
```