为什么我的Python代码显示错误的结果?

时间:2018-10-02 14:40:16

标签: python python-3.x

我有一个代码,可以读取2个整数m和n,并打印出m和n(包括m和n)之间的所有perfect numbers。如果我输入2和7,它应该给我6。但是它给我13。怎么了?

parseInt()

4 个答案:

答案 0 :(得分:2)

您正在使它变得比所需的复杂。您需要一个嵌套循环来解决此问题。遍历范围内的每个数字,将值x设置为等于0的值,每当找到一个均分的数字时,将其加到x上。如果在内循环的末尾x == i,那么您有一个理想数并将其打印出来。如果需要在列表中,请将其附加到列表中。您正在尝试保存所有中间数字,找到后只保存结果。

for i in range(m,n+1):
    x = 0
    for j in range(1,i):
        if i % j == 0:
            x += j
    if i == x:
        print(i)

答案 1 :(得分:0)

您想要做的就是这样。

将一个数字的所有除数期望数字本身加到一个列表中,然后检查该列表的总和是否等于该数字。如果相等,则打印数字,否则取下一个数字

m=int(input())
n=int(input())


for i in range(m,n+1):

    myList=[]
    for j in range(1,i):
        if i%j==0:
            myList.append(j)
    if sum(myList)==i:
        print(i)

输入

2
7

输出

6

答案 2 :(得分:0)

您应该迭代到n / 2,因为任何“数字”都不能被大于“数字”一半的任何数字整除。

for i in range(m, n+1):
    _sum = 0
    for j in range(1, int(i/2)+1):
        if i%j==0:
            _sum += j
    if _sum==i:
       print(i)

答案 3 :(得分:0)

m=int(input())
n=int(input())

'''
mylist =[]  instead of using myList to keep track of factors 
just use sum_of_factors_of_i variable and keep adding newly found factors to 
it by doing so you will not need to loop over myList to get sum.
'''
for i in range(m,n+1):
    sum_of_factors_of_i = 0
    for j in range(1,i):
        if i%j==0:
            sum_of_factors_of_i += j

    if sum_of_factors_of_i == i:
        print(i)

'''        
input 
2
7

output
6
----------------------------------
input
2
30

output
6
28
'''