编写程序 输入自然数n,输出1~n之间的所有完数
num = int(input())
for i in range(1, num+1):
list = []
for j in range(1, i):
if i % j == 0:
list.append(j)
sum_list = sum(list)
if sum_list == i:
print(i)
import math
n = input("请输入一个自然数:")
n = int(n)
for i in range(1, n+1):
factors = [] #因子列表,i 每次循环都清空
for j in range(1, math.floor(i/2)+1):
if i%j == 0:
factors.append(j)
if sum(factors) == i:
print(i, end=',')
你好,如有帮助,请点击下方的采纳按钮。谢谢!。
分析:描述一个正整数如果恰好等于它的因子之和,这个数就称为"完数"。例如,6的因子为1、2、3,而6=1+2+3,因此6是"完数"。
程序如下:
# -*- coding: utf-8 -*-
def wan_shu(m):
for i in range(1,m):
a = []
s = 0
for j in range(1, i):
if i%j==0:
s=s+j
a.append(j)
if s==i:
print("完数是:",s)
print("元素分别为:%s" %a)
if __name__ == '__main__':
m = 1000
wan_shu(m)
输出结果如下:
完数是: 6
元素分别为:[1, 2, 3]
完数是: 28
元素分别为:[1, 2, 4, 7, 14]
完数是: 496
元素分别为:[1, 2, 4, 8, 16, 31, 62, 124, 248]