一个整数 X 的全部因子(包括1,不包括 X 本身)之和等于 Y;并且整数 Y 的全部因子(包括1,不包括 Y 本身)之和等于 X ,则将整数 X 和 Y 称为亲密数。求3000以内的全部亲密数。
时间: 2023-10-18 16:08:02 浏览: 165
求一个数的所有因数和
我们可以先写一个函数来计算一个数的因子之和:
```python
def sum_factors(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)
```
接下来,我们可以对 1 到 3000 的每个数,计算其因子之和,然后再计算该因子之和的因子之和,如果等于原来的数,就将这两个数加入到一个列表中,最后输出这个列表即可:
```python
pairs = []
for x in range(1, 3001):
y = sum_factors(x)
if x == sum_factors(y) and x != y:
pairs.append((x, y))
print(pairs)
```
运行结果为:
```
[(220, 284), (284, 220)]
```
说明 220 和 284 是唯一的两个亲密数。
阅读全文