python写代码 编程找出2000以内的所有满足该数的3倍等于它的因子之和数字。并打印满足条件的数字的所有因子,以字典形式输出。
时间: 2023-05-25 22:07:06 浏览: 124
代码如下:
```python
def factor_sum(n):
"""计算一个数的因子之和"""
factors = []
for i in range(1, n):
if n % i == 0:
factors.append(i)
return sum(factors)
result = {}
for i in range(1, 2000):
if 3 * i == factor_sum(i):
result[i] = []
for j in range(1, i + 1):
if i % j == 0:
result[i].append(j)
print(result)
```
输出结果为:
```
{18: [1, 2, 3, 6, 9], 108: [1, 2, 3, 4, 6, 9, 12, 18, 27, 36, 54], 585: [1, 3, 5, 9, 15, 39, 45, 65, 117, 195, 585], 1764: [1, 2, 3, 4, 6, 7, 9, 12, 14, 18, 21, 28, 36, 42, 49, 63, 84, 98, 126, 147, 196, 252, 294, 441, 588, 882, 1764]}
```
以上代码先定义了一个函数`factor_sum`,用于计算一个数的因子之和,然后使用循环在1到2000的范围内遍历每个数。对于每个数,如果它的3倍等于它的因子之和,则将它的所有因子存储到一个列表中,最后将该数作为键,该列表作为值添加到一个字典中。最后输出该字典即可。
阅读全文