求某范围的质数python
时间: 2023-06-10 22:05:48 浏览: 62
可以使用埃拉托色尼筛法(筛法求素数)来求某个范围内的质数。以下是Python代码示例:
```python
def eratosthenes(n):
primes = [True] * (n + 1)
primes[0], primes[1] = False, False
p = 2
while p ** 2 <= n:
if primes[p]:
for i in range(p ** 2, n + 1, p):
primes[i] = False
p += 1
return [i for i in range(n + 1) if primes[i]]
# example usage: find all primes in [2, 50]
primes = eratosthenes(50)
print(primes)
```
运行结果:
```
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]
```
该函数输入一个整数n,返回一个列表,其中包含了从2到n之间的所有质数。
相关问题
python自定义函数求指定范围素数
可以使用以下代码实现:
```python
def is_prime(n):
"""
判断一个数是否为素数
"""
if n < 2:
return False
for i in range(2, int(n ** 0.5) + 1):
if n % i == 0:
return False
return True
def find_primes(start, end):
"""
找出指定范围内的素数
"""
primes = []
for i in range(start, end+1):
if is_prime(i):
primes.append(i)
return primes
# 测试
print(find_primes(2, 100)) # 输出 2 到 100 范围内的素数
```
解释一下代码:
首先定义了一个 `is_prime(n)` 函数,用于判断一个数是否为素数。这个函数使用了一个常用的判断素数的方法:从 2 到 sqrt(n) 之间的数依次判断是否能够整除该数,如果有一个数能够整除该数,则该数不是素数。如果所有数都不能整除该数,则该数为素数。
然后定义了一个 `find_primes(start, end)` 函数,用于找出指定范围内的素数。这个函数使用了一个 for 循环,从 `start` 到 `end` 之间的所有数依次判断是否为素数,如果是素数,则将它加入到一个列表中。最后返回这个列表。
最后在主程序中测试了一下 `find_primes(start, end)` 函数,输出了 2 到 100 范围内的素数。
求非素数Python
求非素数指的是找出一个范围内所有的合数(非素数)。在Python中可以通过以下代码实现:
```python
def find_composite_numbers(start, end):
composite_numbers = []
for num in range(start, end + 1):
if num > 1:
for i in range(2, num):
if num % i == 0:
composite_numbers.append(num)
break
return composite_numbers
```
这个函数接受两个参数,即开始和结束的数字范围。它会遍历这个范围内的每个数字,判断它是否是合数。如果是合数,就将其加入到一个列表中,并在后面返回这个列表。