求正整数n之内的完数和因子
时间: 2024-05-15 17:01:15 浏览: 111
完数指的是一个数恰好等于它的因子(除本身外)之和的数。例如,6是一个完数,因为6的因子是1、2、3,而1+2+3=6。
以下是求正整数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):
"""
找到小于等于n的所有完数以及它们的因子
"""
perfect_numbers = []
for i in range(1, n+1):
factors = find_factors(i)
if sum(factors) == i:
perfect_numbers.append(i)
print("完数:{},因子:{}".format(i, factors))
return perfect_numbers
n = int(input("请输入一个正整数n:"))
perfect_numbers = find_perfect_numbers(n)
print("小于等于{}的完数为:{}".format(n, perfect_numbers))
```
运行结果:
```
请输入一个正整数n:10000
完数:6,因子:[1, 2, 3]
完数:28,因子:[1, 2, 4, 7, 14]
完数:496,因子:[1, 2, 4, 8, 16, 31, 62, 124, 248]
完数:8128,因子:[1, 2, 4, 8, 16, 32, 64, 127, 254, 508, 1016, 2032, 4064]
小于等于10000的完数为:[6, 28, 496, 8128]
```
阅读全文