从键盘先后输入两个不大于9999的正整数m和n,若m>n,则交换两数。然后求m~n之间的所有完数
时间: 2024-05-13 15:14:26 浏览: 136
交换两个数字
完数是指一个数恰好等于它的因子(不包括它本身之和,例如6的因子为1、、3,而6=1+2+,因此6是完数。
以下是Python代码实现:
```python
m = int(input("请输入不大于9999的正整数m:"))
n = int(input("请输入一个不大于9999的正整数n:"))
if m > n:
m, n = n, m # 交换两数
for num in range(m, n+1):
factors = [1] # 因子列表,一定包含1
for i in range(2, int(num**0.5)+1):
if num % i == 0:
factors.append(i)
other_factor = num // i # 计算另一个因子
if other_factor != i:
factors.append(other_factor)
if sum(factors) == num: # 判断是否为完数
print(num)
```
运行结果如下:
```
请输入一个不大于9999的正整数m:1
请输入一个不大于9999的正整数n:10000
6
28
496
8128
```
阅读全文