本题目要求读入2个正整数a和b(设输入能保证b>a),如果a、b都是素数,则输出闭区间[a,b]内的所有素数并求平均值;否则,输出闭区间[a,b]之内的所有5的倍数。
时间: 2024-05-14 11:12:48 浏览: 93
不定方程ax(x+1)・・・(x+r-1)=by(y+1)・・・(y+s-1)的正整数解 (2012年)
```python
a, b = map(int, input().split())
def is_prime(num):
if num < 2: # 小于2的数不是素数
return False
for i in range(2, int(num**0.5)+1): # 从2到num的平方根遍历
if num % i == 0: # 如果能被整除,说明不是素数
return False
return True
if is_prime(a) and is_prime(b): # 如果a和b都是素数
prime_list = [] # 用一个列表记录闭区间[a,b]内的所有素数
for i in range(a, b+1):
if is_prime(i):
prime_list.append(i)
if len(prime_list) > 0: # 如果闭区间内存在素数
avg = sum(prime_list) / len(prime_list) # 求平均值
print(*prime_list) # 输出所有素数
print("{:.2f}".format(avg)) # 输出平均值,保留2位小数
else: # 如果闭区间内不存在素数
print("No prime numbers")
else: # 如果a和b中有不是素数的数
multiple_of_5 = [] # 用一个列表记录闭区间[a,b]内所有5的倍数
for i in range(a, b+1):
if i % 5 == 0:
multiple_of_5.append(i)
if len(multiple_of_5) > 0: # 如果闭区间内存在5的倍数
print(*multiple_of_5) # 输出所有5的倍数
else: # 如果闭区间内不存在5的倍数
print("No multiples of 5")
```
或者可以将求素数和求5的倍数的部分封装成两个函数,方便代码的复用和维护。完整代码如下:
阅读全文