Python学习:作业02_用Python求1000以内的完全数

如果一个数恰好等于它的因子之和,那这个数就是完全数,比如第一个数是6,它的约数有1,2,3,6,除去6本身外6=1+2+3,第二个完全数是28=1+2+4+7+14,那么问题来了:求出1000以内完全数。

分析过程:首先,要求出一个数字n的所有因子,即对1-n分别取余,余数为0即可;其次,再将这个数的所有因子(除了n本身)求和,如果等于n, 那么n就是完全数(perfect number)。

#  -*- coding:utf-8 -*-
#  coding=utf-8
#  coding:utf-8

# 方法1a = range(1,1000)
b = range(1,1000)
perfectnum = []
for i in a:
    temp = []
    for j in b:
        if j < i:
            if i%j==0:
                temp.append(j)
            else:
                continue
        else:
            break
    count = 0
    for m in temp:
        count = count + m
    if count ==i:
        perfectnum.append(i)
    else:
        continue
print(perfectnum)

# 方法二:
for aa in range(1,1000):
    sum = 0
    for o in range(1,aa):
        if aa%o == 0:
            sum += o
    if sum == aa:
        print(aa)




猜你喜欢

转载自blog.csdn.net/qq_41345367/article/details/80969698