python1、编写程序输出1~10000所有的完数,要求每次输出一个完数后接着输出它对应的因子。如:6是完数,它的因子是:1、2、3。
时间: 2024-05-07 14:15:56 浏览: 192
完数是指一个数恰好等于它的所有因子(不包括自身)之和。根据定义,我们可以编写如下程序来输出1~10000之间的所有完数及其对应的因子:
```python
for num in range(2, 10001):
factors = [1] # 初始化因子列表,加入1
for i in range(2, int(num ** 0.5) + 1):
if num % i == 0:
factors.append(i)
if i != num // i: # 避免重复添加因子
factors.append(num // i)
if sum(factors) == num:
print(num, '是完数,它的因子是:', end='')
for factor in factors:
print(factor, end=' ')
print() # 换行
```
程序中,我们首先遍历1~10000之间的所有整数,对于每个数,我们计算它的因子并保存在列表`factors`中。如果这个数恰好等于它的所有因子之和,就输出这个数及其对应的因子。
在计算因子时,我们只需要遍历2到$\sqrt{\text{num}}$之间的数即可,因为如果一个数num有一个大于$\sqrt{\text{num}}$的因子$i$,那么它一定有一个小于$\sqrt{\text{num}}$的因子$num/i$。这里我们使用了整数除法符号`//`,它表示整除得到的结果向下取整。
运行程序,我们可以得到如下输出:
```
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
```
阅读全文