本题目的要求是编写一个函数,实现输出 m~n 之间所有素数的功能,并求和,m和n由键盘输入。素数是只能被1和自身整除的大于1的正整数。要求程序能对用户输入的数据进行正确性检查,满足条件:m和n都是大于1的正整数,并且m<=n。 首先,需要编写函数inputnumber,实现对用户输入数据的合法性检查。若输入不合法(如输入非数字或m>n),需要提示用户重新输入。接着,编写函数is_prime,判断一个数是否是素数。该函数需要判断输入值是否大于1,并依次用2到该数-1之间的数字去除,判断是否有可整除的数字,若有则不是素数。最后,编写函数output_primes,在此函数中将输入的范围内的素数全部求出,并计算其和。 最终,可以将这些函数结合起来,实现完整的程序。
时间: 2023-06-23 09:08:25 浏览: 91
可以按照以下步骤来实现此程序:
1. 定义函数inputnumber,用于获取用户输入的m和n,并进行合法性检查。若输入不合法,需要提示用户重新输入,直到输入正确为止。
```python
def inputnumber():
while True:
try:
m = int(input("请输入m(大于1的正整数):"))
n = int(input("请输入n(大于1的正整数且大于等于m):"))
if m <= 1 or n <= 1 or m > n:
raise ValueError
break
except ValueError:
print("输入不合法,请重新输入!")
return m, n
```
2. 定义函数is_prime,用于判断一个数是否是素数。
```python
def is_prime(num):
if num <= 1:
return False
for i in range(2, num):
if num % i == 0:
return False
return True
```
3. 定义函数output_primes,用于输出m~n之间的所有素数并计算它们的和。
```python
def output_primes(m, n):
primes = []
for i in range(m, n + 1):
if is_prime(i):
primes.append(i)
print("m~n之间的素数为:", primes)
print("它们的和为:", sum(primes))
```
4. 将这些函数结合起来,实现完整的程序。
```python
def main():
m, n = inputnumber()
output_primes(m, n)
if __name__ == '__main__':
main()
```
完整代码如下:
```python
def inputnumber():
while True:
try:
m = int(input("请输入m(大于1的正整数):"))
n = int(input("请输入n(大于1的正整数且大于等于m):"))
if m <= 1 or n <= 1 or m > n:
raise ValueError
break
except ValueError:
print("输入不合法,请重新输入!")
return m, n
def is_prime(num):
if num <= 1:
return False
for i in range(2, num):
if num % i == 0:
return False
return True
def output_primes(m, n):
primes = []
for i in range(m, n + 1):
if is_prime(i):
primes.append(i)
print("m~n之间的素数为:", primes)
print("它们的和为:", sum(primes))
def main():
m, n = inputnumber()
output_primes(m, n)
if __name__ == '__main__':
main()
```
阅读全文