py编写函数 f(n),返回该数的所有因子之和。如果整数 m 的全部因子(包括 1, 不包括 m 本身)之和等于 n,且整数 n 的全部因子(包括 1,不包括 n 本身)之 和等于 m,并且 m,n 不相等,则称 m,n 是一对亲密数。求 4000 以内的全部亲密 数
时间: 2023-10-18 10:07:12 浏览: 88
求一个数的所有因数和
以下是实现代码:
```python
def sum_of_factors(n):
"""
返回n的所有因子之和
"""
factors = [1]
for i in range(2, int(n ** 0.5) + 1):
if n % i == 0:
factors.append(i)
if i != n // i:
factors.append(n // i)
return sum(factors)
def find_amicable_numbers():
"""
寻找4000以内的亲密数
"""
amicable_numbers = []
for i in range(2, 4000):
sum_i = sum_of_factors(i)
if sum_i > i and sum_of_factors(sum_i) == i:
amicable_numbers.append((i, sum_i))
return amicable_numbers
print(find_amicable_numbers())
```
输出结果为:
```
[(220, 284), (1184, 1210), (2620, 2924)]
```
因此,4000以内的全部亲密数为:(220, 284), (1184, 1210), (2620, 2924)。
阅读全文