在Python 3中打印10以下的完美数字

时间:2018-05-08 14:11:35

标签: python-3.5

我无法弄清楚代码中的错误以及为什么6没有显示为完美数字。

以下是我在10以下打印完美数字的代码:

    s=0
    for j in range(10):
        for i in range(1,j):
            if j%i==0: 
                s=s+i      #for summing up the factors
        if j==s:
            print(j,'is a perfect number')
        else:
            print(j,'is not a perfect number')

输出是: 0是一个完美的数字 1不是一个完美的数字 2不是一个完美的数字 3不是一个完美的数字 4不是一个完美的数字 5不是一个完美的数字 6不是一个完美的数字 7不是一个完美的数字 8不是一个完美的数字 9不是一个完美的数字

2 个答案:

答案 0 :(得分:0)

您需要在最外面的for循环中将sum重置为0:

for j in range(10):
    s=0
    for i in range(1,j):
        if j%i==0: 
            s=s+i      #for summing up the factors
    if j==s:
        print(j,'is a perfect number')
    else:
        print(j,'is not a perfect number')

打印输出:

0是一个完美的数字
1不是一个完美的数字
2不是一个完美的数字
3不是一个完美的数字
4不是一个完美的数字
5不是一个完美的数字
6是完美的数字
7不是一个完美的数字
8不是一个完美的数字
9不是一个完美的数字

答案 1 :(得分:0)

问题是你没有为每个整数重置s。

for j in range(10):
    s=0
    for i in range(1,j):
        if j%i==0: 
            s=s+i      #for summing up the factors
    if j==s:
        print(j,'is a perfect number')
    else:
        print(j,'is not a perfect number')

(0,'是一个完美的数字')
(1,'不是一个完美的数字')
(2,'不是一个完美的数字')
(3,'不是一个完美的数字')
(4,'不是一个完美的数字')
(5,'不是一个完美的数字')
(6,'是一个完美的数字')
(7,'不是一个完美的数字')
(8,'不是一个完美的数字')
(9,'不是一个完美的数字')