编写程序 输入自然数n,输出1~n之间的所有完数

编写程序 输入自然数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]