先说什么是完数?
如果一个数等于它的因子(因子就是所有可以整除这个数的数)之和,则称该数为“完数”(或“完全数”)。例如,6的因子为1、2、3,而6=1+2+3,因此6是“完数”。那如果要求某一范围内完数的个数。要如何实现呢?
下面直接上代码:
########################
if __name__=="__main__":
n = int(input("请输入所选范围上限: "))
i = 2 # 变量 i 控制选定数的范围
while i <= n:
s = 0 # s记录累加因子之和,保证每次循环时s的初值为0
j = 1 # j 控制除数范围
for j in range(i):
if j != 0 and i % j == 0: # 判断 j 是不是 i 的因子
s += j # 因子和
if s == i: # 判断因子之和是否和原数相等
print("2到%d之间的完数:%d" %(n, i))
i += 1
########################
执行结果如下:
请输入所选范围上限: 800
2到800之间的完数:6
2到800之间的完数:28
2到800之间的完数:496
________________END______________
网友评论