输入两个正整数m和n(m<n),利用生成器对象生成[m,n]上的所有素数组成的元组,并使用适当的函数求出其中的最大素数、最小素数和素数的个数。
时间: 2024-01-27 08:03:31 浏览: 60
好的,我可以帮你实现这个功能。以下是代码实现:
```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 gen_primes(m, n):
"""
生成[m, n]上的素数
"""
for i in range(m, n + 1):
if is_prime(i):
yield i
def get_prime_info(m, n):
"""
获取[m, n]上素数的最大值、最小值和个数
"""
primes = list(gen_primes(m, n))
max_prime = max(primes)
min_prime = min(primes)
count = len(primes)
return max_prime, min_prime, count
# 示例
m = 2
n = 20
max_prime, min_prime, count = get_prime_info(m, n)
print(f"[{m},{n}]上的素数个数为{count},最大素数为{max_prime},最小素数为{min_prime}。")
```
运行结果为:
```
[2,20]上的素数个数为8,最大素数为19,最小素数为2。
```
注意,为了实现生成器对象生成[m,n]上所有素数,我定义了一个`gen_primes`函数,该函数使用了一个`is_prime`函数来判断一个数是否为素数。在`get_prime_info`函数中,我将生成器对象生成的素数转换为列表,然后使用Python内置函数`max`、`min`和`len`来获取最大素数、最小素数和素数个数。
阅读全文