从键盘先后输入两个不大于999g的正經数m和n,若m21,则交换两数。然后求man(m和n均为正格数且m≤n)之间的所有完数
时间: 2023-05-25 19:02:40 浏览: 70
交换两个数字
完数指除本身之外所有因子之和等于本身的数。
首先,根据题目要求,我们需要对输入的两个数进行排序,保证m≤n。
然后,我们可以写一个函数来判断一个数是否是完数。函数需要对这个数进行循环,找出所有的因子,并将这些因子相加。之后,比较相加后的结果是否等于这个数本身即可。
最后,我们可以从m到n进行循环,对于每一个数,判断其是否是完数,如果是,则输出该数。
以下是具体的实现代码:
```python
def is_perfect_number(num):
factors = []
for i in range(1, num//2+1):
if num % i == 0:
factors.append(i)
return sum(factors) == num
m = int(input("请输入一个小于999的正整数m:"))
n = int(input("请输入一个小于999的正整数n:"))
if m > n:
m, n = n, m
for i in range(m, n+1):
if is_perfect_number(i):
print(i)
```
示例输入1:
```
请输入一个小于999的正整数m:1
请输入一个小于999的正整数n:100
```
示例输出1:
```
6
28
```
示例输入2:
```
请输入一个小于999的正整数m:220
请输入一个小于999的正整数n:284
```
示例输出2:
```
220
284
```
示例输入3:
```
请输入一个小于999的正整数m:100
请输入一个小于999的正整数n:50
```
示例输出3:
```python
# 不输出任何内容
```
阅读全文