题目描述
一个数如果恰好等于它的各因子(该数本身除外)子和,如:6=3+2+1,则称其为“完数”;若因子之和大于该数,则称其为“盈数”。求出2 到60 之间所有“完数”和“盈数”,并以如下形式输出: E: e1 e2 e3 ......(ei 为完数) G: g1 g2 g3 ......(gi 为盈数)
输入描述:
无
输出描述:
按描述要求输出(注意EG后面的冒号之后有一个空格)。
代码:
#!D:/workplace/python
# -*- coding: utf-8 -*-
# @File : 盈数和因数.py
# @Author: WangYe
# @Date : 2019/2/20
# @Software: PyCharm
start = ['E:']
wanshu = []
mid = ['G:']
error = ['2'] #我认为不应该包含2,但是答案有2.不包含本身的话,2的因子只有1啊
yingshu = []
for i in range(1,61):
temp_list = []
for k in range(1,i):
if i%k == 0:
temp_list.append(k)
else:
continue
res = 0
for j in range(len(temp_list)):
res = res + temp_list[j]
if res == i:
wanshu.append(i)
if res >i:
yingshu.append(i)
last =start+wanshu+mid+error+yingshu
for num in last:
print(num,end=' ')