Python编程题3--找出1000以内的完全数
题目
如果一个数恰好等于它的因子之和,则称该数为“完全数”,又称完美数或完备数。例如:
第一个完全数是6,它有约数1、2、3、6,除去它本身6外,其余3个数相加,1+2+3=6。
第二个完全数是28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4+7+14=28。
请按照从小到大的顺序输出 1000 以内的完全数,并用"逗号"分隔输出结果
实现思路
- 用第一层 for循环 控制1000以内的数,标记 i ,并通过变量 sum 来控制 i 的所有除 i 外的约数之和
- 用第二层 for循环 控制 i 以内的数,标记 j
- 如果 i 能 整除 j ,那么 j 就是 i 的一个约数,如果 sum = i ,则表示 i 是完全数
- 先把完全数转为字符串类型,再添加到列表中
- 对结果进行处理,通过
join()
方法用 "," 拼接
注意:使用 join()
拼接列表时,列表中的元素不能是 int
类型。
代码实现
def demo():
result = []
for i in range(1, 1000):
sum = 0
for j in range(1, i):
if i % j == 0:
sum += j
if sum == i:
result.append(str(i))
return ",".join(result)
print("1000以内的完全数有:{}".format(demo()))
更多Python编程题,等你来挑战:Python编程题汇总(持续更新中……)
作者:wintest
本文版权归作者和博客园共有,欢迎转载,但必须在文章页面明显位置给出原文链接,并保留此段声明,否则保留追究法律责任的权利。