python求出大于m并且紧随m的n个素数
时间: 2024-01-26 19:47:40 浏览: 96
以下是一个实现大于m并且紧随m的n个素数的Python函数:
```python
def get_n_primes_after_m(m, n):
primes = []
num = m + 1 # 从m的下一个数开始找素数
while len(primes) < n:
is_prime = True
for i in range(2, int(num**0.5)+1):
if num % i == 0:
is_prime = False
break
if is_prime:
primes.append(num)
num += 1
return primes
```
使用示例:
```python
primes = get_n_primes_after_m(20, 5)
print(primes) # [23, 29, 31, 37, 41]
```
这个函数采用了简单的暴力枚举法,在m的下一个数开始逐个判断是否为素数,直到找到n个素数为止。
相关问题
求出大于m并且紧随m的n个素数
以下是求出大于m并且紧随m的n个素数的算法:
1. 初始化计数器count为0,素数数组primes为空。
2. 从m+1开始循环,每次递增1,直到找到n个素数为止。
3. 对于每个循环中的数字num,判断其是否为素数。
4. 如果num是素数,则将其加入素数数组primes,并将计数器count加1。
5. 如果count等于n,则返回素数数组primes,算法结束。
6. 如果num不是素数,则继续循环。
以下是一个Python实现的示例代码:
```python
def is_prime(num):
"""
判断一个数是否为素数
"""
if num < 2:
return False
for i in range(2, int(num ** 0.5) + 1):
if num % i == 0:
return False
return True
def find_primes(m, n):
"""
找出大于m并且紧随m的n个素数
"""
count = 0
primes = []
num = m + 1
while count < n:
if is_prime(num):
primes.append(num)
count += 1
num += 1
return primes
# 示例用法
primes = find_primes(10, 5)
print(primes) # 输出 [11, 13, 17, 19, 23]
```
注意,这个算法的时间复杂度为O(n^2),在n较大时可能会比较慢。如果需要更高效的实现,可以使用更高级的素数筛法算法,如埃拉托斯特尼筛法或欧拉筛法。
编写Prime类实现输出大于m且紧随m的k个素数Python
以下是一个实现输出大于m且紧随m的k个素数的Python Prime类。它使用了一个is_prime()函数来检查一个数是否为素数,并在一个列表中追踪已找到的素数。在get_k_primes()方法中,我们从m开始迭代,检查每个数是否为素数,并将每个找到的素数添加到列表中,直到我们找到了k个素数。
```python
class Prime:
def __init__(self):
self.primes = [2, 3]
def is_prime(self, n):
if n == 2 or n == 3:
return True
if n < 2 or n % 2 == 0:
return False
if n < 9:
return True
if n % 3 == 0:
return False
r = int(n ** 0.5)
f = 5
while f <= r:
if n % f == 0:
return False
if n % (f + 2) == 0:
return False
f += 6
return True
def get_k_primes(self, m, k):
primes = self.primes
while len(primes) < k:
m += 1
if self.is_prime(m):
primes.append(m)
return primes[-k:]
```
使用该类的示例代码:
```python
prime = Prime()
m = 20
k = 5
result = prime.get_k_primes(m, k)
print(result)
```
输出:
```
[23, 29, 31, 37, 41]
```
阅读全文