输入一个整数n 如果一个数恰好等于它的因子之和,则这个数称为完数,编程求n以内的所有完数
时间: 2023-11-25 07:05:55 浏览: 94
以下是求解n以内所有完数的 Python 代码:
```python
def find_factors(num):
factors = []
for i in range(1, num):
if num % i == 0:
factors.append(i)
return factors
def find_perfect_numbers(n):
perfect_numbers = []
for i in range(2, n+1):
factors = find_factors(i)
if sum(factors) == i:
perfect_numbers.append(i)
return perfect_numbers
n = int(input("请输入一个整数n:"))
perfect_numbers = find_perfect_numbers(n)
print("在{}以内的所有完数为:{}".format(n, perfect_numbers))
```
运行结果:
```
请输入一个整数n:10000
在10000以内的所有完数为:[6, 28, 496, 8128]
```
解释:
首先定义了一个函数`find_factors`,用于找到一个数的所有因子。
然后定义了另一个函数`find_perfect_numbers`,用于找到n以内的所有完数。对于每个数i,先找到它的所有因子,然后判断它们的和是否等于i,如果是,则将i加入到完数列表中。
最后,输入一个整数n,调用`find_perfect_numbers`函数并打印输出结果。
阅读全文