求300以内的素数的python 代码
时间: 2024-01-22 16:04:09 浏览: 92
好的,以下是求300以内素数的Python代码:
```python
primes = []
for num in range(2, 300):
for i in range(2, num):
if (num % i) == 0:
break
else:
primes.append(num)
print(primes)
```
这段代码会输出所有在2到300之间的素数。
相关问题
用筛选法求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
```
用eratosthenes筛法求10000以内的全体素数,先求100以内的素数,再求10000以内的素数 python代码
埃拉托斯特尼筛法(Eratosthenes筛法)是一种高效筛选素数的方法。首先,我们使用这个方法求出100以内的素数,然后基于这个过程求出10000以内的素数。
以下是Python代码示例:
```python
def sieve_of_eratosthenes(limit):
is_prime = [True] * (limit + 1)
is_prime[0] = is_prime[1] = False
for i in range(2, int(limit**0.5) + 1):
if is_prime[i]:
for j in range(i*i, limit + 1, i):
is_prime[j] = False
primes = [i for i, prime in enumerate(is_prime) if prime]
return primes
# 求100以内的素数
primes_under_100 = sieve_of_eratosthenes(100)
print("100以内的素数有:", primes_under_100)
# 求10000以内的素数
primes_under_10000 = sieve_of_eratosthenes(10000)
print("10000以内的素数有:", primes_under_10000)
```
这段代码首先定义了一个函数`sieve_of_eratosthenes`,该函数接受一个上限值`limit`,返回小于或等于该上限值的所有素数。函数内部,我们首先创建一个布尔数组`is_prime`,其中索引代表数字,值为`True`表示该索引对应的数字可能是素数。然后,我们从2开始迭代,将非素数的位置标记为`False`。
在主程序中,我们先调用`sieve_of_eratosthenes`函数求出100以内的素数,然后再次调用该函数求出10000以内的素数,并打印结果。
阅读全文