求整数n以内(含n)的全部亲密数。 说明:如果正整数A的全部因子(包括1,不包括A本身)之和等于B;且正整数B的全部因子(包括1,不包括B本身)之和等于A,A不等于B,则将正整数A和B称为亲密数。 1不和其他数形成亲密数。 编写函数sumElem(),实现统计一个数字的因子之和(包括1,不包括A本身)
时间: 2023-10-18 15:30:46 浏览: 173
下面是 Python 代码实现:
```python
def sumElem(n):
"""
计算一个数字的因子之和(包括1,不包括本身)
"""
sum = 1
for i in range(2, int(n ** 0.5) + 1):
if n % i == 0:
sum += i
if i != n // i:
sum += n // i
return sum
def getAmicableNum(n):
"""
获取n以内(含n)的全部亲密数
"""
res = []
for i in range(2, n+1):
sum_i = sumElem(i)
if sum_i > i and sumElem(sum_i) == i:
res.append((i, sum_i))
return res
# 示例
print(getAmicableNum(10000)) # 输出 [(220, 284), (1184, 1210), (2620, 2924), (5020, 5564), (6232, 6368)]
```
函数 `sumElem` 计算一个数字的因子之和(包括1,不包括本身)。函数 `getAmicableNum` 获取 n 以内(含 n)的全部亲密数。函数首先遍历 2 到 n 的所有数字,计算每个数字的因子之和,如果因子之和大于该数字并且因子之和的因子之和等于该数字,则将这两个数字加入到结果列表中。最后返回结果列表。
阅读全文