输入两个正整数m和n(m<n),利用生成器对象生成[m,n]上的所有素数组成的元组,并使用适当的函数求出其中的最大素数、最小素数和素数的个数。
时间: 2024-01-27 12:03:37 浏览: 76
可以编写一个生成器函数`get_primes(start, end)`,用于生成指定区间`[start, end]`内的所有素数。然后,可以利用该生成器函数生成区间`[m, n]`内的所有素数组成的元组,再对元组中的素数进行统计和求最大、最小值。
代码如下:
```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 get_primes(start, end):
"""生成[start, end]区间内的所有素数"""
for i in range(start, end + 1):
if is_prime(i):
yield i
# 输入区间 [m, n]
m = int(input("请输入 m:"))
n = int(input("请输入 n:"))
# 生成区间 [m, n] 内的所有素数组成的元组
primes = tuple(get_primes(m, n))
# 统计素数的个数
count = len(primes)
# 求最大素数和最小素数
if count > 0:
max_prime = max(primes)
min_prime = min(primes)
else:
max_prime = min_prime = None
# 输出结果
print(f"素数的个数为:{count}")
print(f"最大素数为:{max_prime}")
print(f"最小素数为:{min_prime}")
```
运行程序,输入`m`和`n`,即可得到统计结果。需要注意的是,由于素数的个数可能为0,因此需要在求最大、最小素数之前先判断元组中是否有素数。
阅读全文