一个数如果等于其因子之和,则称为“完数”。例如,6的因子是1,2,3,而6=1+2+3,则6是完数。编写程序,输入两个正整数m和n,输出m和n之间(包含m和n)的所有完数,用空格隔开。
时间: 2024-10-14 13:08:19 浏览: 24
Java 完数 Mooc
5星 · 资源好评率100%
为了编写一个这样的程序,你可以采用以下步骤:
1. 定义一个函数 `is_perfect_number` 来检查一个数是否是完数。这个函数需要接受一个整数作为输入,然后计算所有因子(包括1和它本身)之和,并比较这个和是否等于原始数字。
```python
def is_perfect_number(num):
factors = [i for i in range(1, num + 1) if num % i == 0]
return sum(factors) == num
```
2. 写主程序部分,遍历从 `m` 到 `n` 的每个数字,对每一个数使用 `is_perfect_number` 函数进行检查,如果是完数则打印出来。
```python
def find_perfect_numbers(m, n):
perfect_numbers = []
for num in range(m, n + 1):
if is_perfect_number(num):
perfect_numbers.append(str(num))
print(" ".join(perfect_numbers))
# 测试输入
find_perfect_numbers(1, 100)
```
当你运行这个程序并传入适当的 `m` 和 `n` 值,比如 `find_perfect_numbers(1, 100)`,它会找出1到100之间的所有完数。
阅读全文