找到1000以内的完数 利用Python实现

找到1000以内的完数 利用Python实现

题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如,6 的因子为1、 2、3,而6=1+2+3,因此6 是完数。编程,找出1000 之内的所有完数,并输出该完数及对应的因子。

方法一

ls = []
for i in range(1,1001):
    for j in range(1,i):
        if i % j == 0:
            ls.append(j)
    if sum(ls) == i:
        print("{}是完数,其因子包括{}".format(i,ls))
    ls.clear()

运行结果
在这里插入图片描述
方法一:实测8行代码,第一次遍历1-1000,j 遍历1-i,用于作为j 的除数,如果i / j的余数为零,则表示它是i 的因数,添加到列表中,然后利用Python中方便的sum函数进行判断,轻松解决这个问题。

方法二

m=1000
for a in range(2,m+1):
    s = a
    L1=[]
    for i in range(1, a):
        if a%i == 0:
            s -= i
            L1.append(i) 
    if s == 0:
        print("完数:%d,因子包括:"%a,end="") 
        for j in range(0, len(L1)):
            print("%d" % L1[j], end=",")
        print()

运行结果
在这里插入图片描述
方法二与方法一思路大致相同,不同在于,s-因数,若为0,则代表该数是完数。

今天的分享就到这,如果你有什么新想法,请在评论区告诉我。

你可能感兴趣的:(蒟蒻的刷题记录,python,列表,算法)