找到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,则代表该数是完数。
今天的分享就到这,如果你有什么新想法,请在评论区告诉我。